微信分享功能详解
时间:2015-02-04 18:43:24
收藏:0
阅读:330
相信来看帖子朋友都有看过【微信官方的开发文档】,所以神马申请APP_ID之类的我就不多说了,直接讲代码,请大家看清楚我写的【注释】
地址:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&lang=zh_CN&token=805e15102d4e99fcef6ea996c3b0d5acfa1a34ac
地址:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&lang=zh_CN&token=805e15102d4e99fcef6ea996c3b0d5acfa1a34ac
步骤:
1.需要的key,通过创建应用,去通过微信的审核。
2.填写平台信息,需要的签名去获取。然后就是下面的具体步骤了。
3.下载开发工具的jar.
这里面的jar也要部署到项目当中去拉
----------------------------------- 1、执行分享的操作的方法 --------------------------------------------------------------------------------------
一、在编码之前请一定将【微信的提供的 libammsdk.jar 导入 libs文件夹中解压】
public class ShareAppDialog_T extends Dialog implements android.view.View.OnClickListener,
OnTouchListener {
// 发送的目标场景,WXSceneSession表示发送到会话
private static final int WXSceneSession = 0;
// 发送的目标场景,WXSceneTimeline表示发送朋友圈
private static final int WXSceneTimeline = 1;
private IWXAPI api;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
// 注册微信sdk
api = WXAPIFactory.createWXAPI(getContext(), Constants.APP_ID, true);
api.registerApp(Constants.APP_ID);
}
@Override
public void onClick(View v) {
int id = v.getId();
switch (id) {
case 分享到微信好友:
sendWxUrl(WXSceneSession);
break;
cas 分享到微信朋友圈:
sendWxUrl(WXSceneTimeline);
break;
}
/**
* 此方法是写的分享链接,如果朋友想要分享【图片,文字,等其他可下载微信官方Demo,SendToWXActivity.java类中写的很清楚】
* @param scene 0代表好友 1代表朋友圈
*/
public void sendWxUrl(int scene){
WXWebpageObject webpage = new WXWebpageObject();
webpage.webpageUrl = getContext().getResources().getString(R.string.share_url);;
WXMediaMessage msg = new WXMediaMessage(webpage);
msg.title = getContext().getResources().getString(R.string.share_title);
msg.description = getContext().getResources().getString(R.string.share_content);
Bitmap thumb = BitmapFactory.decodeResource(getContext().getResources(), R.drawable.icon);
msg.thumbData = MMAlert.bmpToByteArray(thumb, true);
SendMessageToWX.Req req = new SendMessageToWX.Req();
req.transaction = buildTransaction("webpage");
req.message = msg;
if (scene == 0) {
// 分享到微信会话
req.scene = SendMessageToWX.Req.WXSceneSession;
} else {
// 分享到微信朋友圈
req.scene = SendMessageToWX.Req.WXSceneTimeline;
}
api.sendReq(req);
this.dismiss(); // 由于我这个类是一个Dialog, 如果你的类是Activity请调用 finish();
}
// 过滤发送内容格式
private String buildTransaction(final String type) {
return (type == null) ? String.valueOf(System.currentTimeMillis())
: type + System.currentTimeMillis();
}
}
---------------------------------------- 2、想要实现【微信的回调】(即分享状态) ------------------------------------------------------------------------------
一、必须在你的工程中新建一个以 【.wxapi】 的包例如: com.boco.huipai.user.wxapi
二、在包中新建一个Activity,【类名必须叫 WXEntryActivity 】
三、当前 Activity 必须实现【微信的 IWXAPIEventHandler 】
四、WXEntryActivity 类的layout布局文件不用做任何编码
五、WXEntryActivity 中代码实现
<!-- 微信分享回调实现界面 -->
package com.boco.huipai.user.wxapi;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Window;
import android.widget.Toast;
import com.boco.huipai.user.Constants;
import com.boco.huipai.user.R;
import com.tencent.mm.sdk.openapi.BaseReq;
import com.tencent.mm.sdk.openapi.BaseResp;
import com.tencent.mm.sdk.openapi.IWXAPI;
import com.tencent.mm.sdk.openapi.IWXAPIEventHandler;
import com.tencent.mm.sdk.openapi.WXAPIFactory;
public class WXEntryActivity extends Activity implements IWXAPIEventHandler{
private IWXAPI api;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
// 注册微信sdk
api = WXAPIFactory.createWXAPI(this, Constants.APP_ID, true);
api.registerApp(Constants.APP_ID);
api.handleIntent(getIntent(), this);
}
/**
* 微信发送请求到第三方应用时,会回调到该方法
*/
@Override
public void onReq(BaseReq req) {
}
/**
* 第三方应用发送到微信的请求处理后的响应结果,会回调到该方法
*/
@Override
public void onResp(BaseResp resp) {
int result = 0;
switch (resp.errCode) {
case BaseResp.ErrCode.ERR_OK: // 分享成功
result = R.string.errcode_success;
break;
case BaseResp.ErrCode.ERR_USER_CANCEL:// 取消分享
result = R.string.errcode_cancel;
break;
case BaseResp.ErrCode.ERR_AUTH_DENIED:// // 分享失败
result = R.string.errcode_deny;
break;
default:
result = R.string.errcode_unknown;
break;
}
Toast.makeText(this, result, Toast.LENGTH_LONG).show();
finish();
}
}
六、AndroidManifest.xml 文件注册 WXEntryActivity
【注意:android:exported="true" 必须配置】
<activity
android:name="com.boco.huipai.user.wxapi.WXEntryActivity"
android:exported="true">
</activity>
评论(0)