Android应用中如何接入微信分享功能
发表于:2025-11-10 作者:千家信息网编辑
千家信息网最后更新 2025年11月10日,本文小编为大家详细介绍"Android应用中如何接入微信分享功能",内容详细,步骤清晰,细节处理妥当,希望这篇"Android应用中如何接入微信分享功能"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢
千家信息网最后更新 2025年11月10日Android应用中如何接入微信分享功能
本文小编为大家详细介绍"Android应用中如何接入微信分享功能",内容详细,步骤清晰,细节处理妥当,希望这篇"Android应用中如何接入微信分享功能"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
注册应用信息并下载必要工具
在微信开放平台注册应用信息
下载 签名生成工具获取待接入应用的签名
应用信息填入签名
注意:由于一般调试签名和正式签名不一致,测试时可填入测试包的签名,上线时需要改为正式包的签名
接入
在build.gradle中,添加如下依赖:
dependencies { compile 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'}或:
dependencies { compile 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'}其中,前者包含统计功能
AndroidManifest.xml中添加权限和微信回调Activity
这里使用了一个透明的Activity来处理微信分享结果回调
主题:
Activity
当微信分享成功,点击返回App时,微信会主动调用WXEntryActivity,并将结果通过Intent传给WXEntryActivity,此时调用api.handleIntent(getIntent(), this)对结果进行处理,handleIntent第二个参数为IWXAPIEventHandler,分享结果会在onResp方法中处理,在这里我们发送一个广播,并在WXShare对象中对该广播进行监听
public class WXEntryActivity extends BaseActivity implements IWXAPIEventHandler { private IWXAPI api; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Logger.i("WXEntryActivity"); WXShare share = new WXShare(this); api = share // .register() .getApi(); //注意: //第三方开发者如果使用透明界面来实现WXEntryActivity,需要判断handleIntent的返回值,如果返回值为false,则说明入参不合法未被SDK处理,应finish当前透明界面,避免外部通过传递非法参数的Intent导致停留在透明界面,引起用户的疑惑 try { if (!api.handleIntent(getIntent(), this)) { finish(); } } catch (Exception e) { e.printStackTrace(); } } @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); Logger.i("onNewIntent"); setIntent(intent); if (!api.handleIntent(intent, this)) { finish(); } } @Override public void onReq(BaseReq baseReq) { } @Override public void onResp(BaseResp baseResp) { Intent intent = new Intent(WXShare.ACTION_SHARE_RESPONSE); intent.putExtra(WXShare.EXTRA_RESULT, new WXShare.Response(baseResp)); sendBroadcast(intent); finish(); } }工具类
public class WXShare { public static final String APP_ID = "wx0123456789"; public static final String ACTION_SHARE_RESPONSE = "action_wx_share_response"; public static final String EXTRA_RESULT = "result"; private final Context context; private final IWXAPI api; private OnResponseListener listener; private ResponseReceiver receiver; public WXShare(Context context) { api = WXAPIFactory.createWXAPI(context, APP_ID); this.context = context; } public WXShare register() { // 微信分享 api.registerApp(APP_ID); receiver = new ResponseReceiver(); IntentFilter filter = new IntentFilter(ACTION_SHARE_RESPONSE); context.registerReceiver(receiver, filter); return this; } public void unregister() { try { api.unregisterApp(); context.unregisterReceiver(receiver); } catch (Exception e) { e.printStackTrace(); } } public WXShare share(String text) { WXTextObject textObj = new WXTextObject(); textObj.text = text; WXMediaMessage msg = new WXMediaMessage(); msg.mediaObject = textObj; // msg.title = "Will be ignored"; msg.description = text; SendMessageToWX.Req req = new SendMessageToWX.Req(); req.transaction = buildTransaction("text"); req.message = msg; req.scene = SendMessageToWX.Req.WXSceneSession; boolean result = api.sendReq(req); Logger.i("text shared: " + result); return this; } public IWXAPI getApi() { return api; } public void setListener(OnResponseListener listener) { this.listener = listener; } private String buildTransaction(final String type) { return (type == null) ? String.valueOf(System.currentTimeMillis()) : type + System.currentTimeMillis(); } private class ResponseReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Response response = intent.getParcelableExtra(EXTRA_RESULT); Logger.d("type: " + response.getType()); Logger.d("errCode: " + response.errCode); String result; if (listener != null) { if (response.errCode == BaseResp.ErrCode.ERR_OK) { listener.onSuccess(); } else if (response.errCode == BaseResp.ErrCode.ERR_USER_CANCEL) { listener.onCancel(); } else { switch (response.errCode) { case BaseResp.ErrCode.ERR_AUTH_DENIED: result = "发送被拒绝"; break; case BaseResp.ErrCode.ERR_UNSUPPORT: result = "不支持错误"; break; default: result = "发送返回"; break; } listener.onFail(result); } } } } public static class Response extends BaseResp implements Parcelable { public int errCode; public String errStr; public String transaction; public String openId; private int type; private boolean checkResult; public Response(BaseResp baseResp) { errCode = baseResp.errCode; errStr = baseResp.errStr; transaction = baseResp.transaction; openId = baseResp.openId; type = baseResp.getType(); checkResult = baseResp.checkArgs(); } @Override public int getType() { return type; } @Override public boolean checkArgs() { return checkResult; } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeInt(this.errCode); dest.writeString(this.errStr); dest.writeString(this.transaction); dest.writeString(this.openId); dest.writeInt(this.type); dest.writeByte(this.checkResult ? (byte) 1 : (byte) 0); } protected Response(Parcel in) { this.errCode = in.readInt(); this.errStr = in.readString(); this.transaction = in.readString(); this.openId = in.readString(); this.type = in.readInt(); this.checkResult = in.readByte() != 0; } public static final Creator CREATOR = new Creator() { @Override public Response createFromParcel(Parcel source) { return new Response(source); } @Override public Response[] newArray(int size) { return new Response[size]; } }; } } 接口
public interface OnResponseListener { void onSuccess(); void onCancel(); void onFail(String message);}使用
在需要使用微信分享的Activity中:
@Overrideprotected void onCreate(Bundle savedInstanceState) { wxShare = new WXShare(this); wxShare.setListener(new OnResponseListener() { @Override public void onSuccess() { // 分享成功 } @Override public void onCancel() { // 分享取消 } @Override public void onFail(String message) { // 分享失败 } });}@Overrideprotected void onStart() { super.onStart(); wxShare.register();}@Overrideprotected void onDestroy() { wxShare.unregister(); super.onDestroy();}启动分享
wxShare.share("这是要分享的文字");到这里微信分享就完成啦!
另外,在微信官方例程中,有个定时刷新应用注册信息的receiver
AndroidManifest.xml中添加:
代码:
public class AppRegister extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { final IWXAPI api = WXAPIFactory.createWXAPI(context, null); // 将该app注册到微信 api.registerApp(WXShare.APP_ID); }}读到这里,这篇"Android应用中如何接入微信分享功能"文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注行业资讯频道。
应用
接入
处理
功能
信息
结果
工具
文章
界面
成功
内容
参数
广播
测试
妥当
一致
必要
主题
代码
会主
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
正确使用网络安全文明上网
中国人保软件开发岗北京
戴尔安全引导数据库
如何建立数据库成绩管理
oracle数据库清空
网络安全杂志中国公安大学
网络安全作业暑假活动
沈阳软件开发系统购买
天津计算机软件开发招聘
工程应用软件开发
什么是网络技术产品介绍
网络安全宣传周培训
企业网络一般需要哪些服务器
数据库应用技术怎么列表格
指纹 数据库
佛山比较好的软件开发公司
试述电子商务网络安全要素
vc数据库怎么用折线图
网络技术王俊伟
无线网络安全性选什么区别
dump备份数据库
中国人保软件开发岗北京
在高速服务器过夜超时
苏声网络技术有限公司
迪安诊断软件开发
什么是数据库理论
mysql数据库语法
上海品质软件开发平台
南宁渗透靶场网络安全
数据库的安全机制是