微信分享配置回调Activity中android:exported="true"的一个坑

本文介绍如何配置微信分享回调Activity WXEntryActivity,并确保其正确回调。需实现IWXAPIEventHandler接口,处理不同响应码,如ERR_OK、ERR_USER_CANCEL等。在AndroidManifest.xml中设置singleInstance启动模式及exported属性。

在做微信分享的时候,需要用到一个微信的回调Activity:WXEntryActivity

用的是百度的frontia的分享功能

需要用到微信的jar包,可以去开放平台获取

public class WXEntryActivity extends BaseActivity implements IWXAPIEventHandler {

这个activity需要实现一个接口,接口回调函数

// 第三方应用发送到微信的请求处理后的响应结果,会回调到该方法
	@Override
	public void onResp(BaseResp resp) {
		switch (resp.errCode) {
		case BaseResp.ErrCode.ERR_OK:
			if(wxresp!=null)
			wxresp.onSuccess();
			Toast.makeText(this, "发送成功", Toast.LENGTH_LONG).show();
			finish();
			break;
		case BaseResp.ErrCode.ERR_USER_CANCEL:
			if(wxresp!=null)
			wxresp.onFail();
			Toast.makeText(this, "分享取消", Toast.LENGTH_LONG).show();
			finish();
			break;
		case BaseResp.ErrCode.ERR_AUTH_DENIED:
			Toast.makeText(this, "分享被拒绝", Toast.LENGTH_LONG).show();
			finish();
			break;
		default:
			Toast.makeText(this, "分享返回", Toast.LENGTH_LONG).show();
			break;
		}

	}

最后需要注意的是在manifest里面配置这个activity,必须配置启动模式为singleInstance,这个启动模式会开辟另外一个栈来启动,因为要调用微信客户端里的界面,所以是在另外一个栈来实现,如果对这个模式不是很了解,个人觉得郭霖的第一行代码里面讲的很明了,推荐看看

<activity android:name="com.xxx.xxx.wxapi.WXEntryActivity"
            android:launchMode="singleInstance"
            android:exported="true"
            android:windowSoftInputMode="adjustPan|adjustUnspecified|stateHidden"
            android:screenOrientation="portrait"/>

这样这个回调activity才会回调。之前一直没回调就是因为没配置singleInstance!!!


之前理解错误了,以为是没配置singleInstance,其实是没配置android:exported="true"这个,尴尬了!!!!!误导大家了,抱歉!

不过很奇怪我用的百度的frontia分享组件,微信分享需要额外的一个activity,腾讯qq分享不需要额外的activity,但两个平台都需要到相应地方通过审核拿到key才能用


<?xml version="1.0" encoding="utf-8" standalone="no"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="preferExternal" package="com.dw.Dating.lua" platformBuildVersionCode="25" platformBuildVersionName="7.1.1"> <supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:smallScreens="true" android:xlargeScreens="true"/> <uses-feature android:glEsVersion="0x20000"/> A <uses-permission android:name="android.permission.INTERNET"/> <uses-feature android:name="android.hardware.touchscreen" android:required="false"/> <uses-feature android:name="android.hardware.touchscreen.multitouch" android:required="false"/> <uses-feature android:name="android.hardware.touchscreen.multitouch.distinct" android:required="false"/> <uses-permission android:name="android.permission.WAKE_LOCK"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> <uses-permission android:name="android.permission.READ_LOGS"/> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/> <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.webkit.permission.PLUGIN"/> <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/> <uses-permission android:name="android.permission.VIBRATE"/> <meta-data android:name="android.support.VERSION" android:value="25.3.1"/> <application android:hardwareAccelerated="false" android:icon="@drawable/app_icon" android:isGame="true" android:label="@string/app_name" android:name="com.dw.Dating.wxapi.App"> <meta-data android:name="URL_VALUE" android:value="http://192.168.111.88"/> <meta-data android:name="CHANNEL" android:value="AgentID-0"/> <meta-data android:name="FW_VALUE" android:value="FW-30855784"/> <meta-data android:name="AppID" android:value="wx401c37330dd3e92e"/> <activity android:configChanges="locale|fontScale|keyboard|keyboardHidden|mcc|mnc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|touchscreen|uiMode" android:label="@string/app_name" android:launchMode="singleTask" android:name="com.dw.Dating.wxapi.MainActivity" android:screenOrientation="landscape"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> <category android:name="android.intent.category.LEANBACK_LAUNCHER"/> </intent-filter> <meta-data android:name="unityplayer.UnityActivity" android:value="true"/> <meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="false"/> </activity> <activity android:configChanges="keyboardHidden|orientation|screenSize" android:launchMode="singleTask" android:name="com.fanwei.jubaosdk.cashier.CashierActivity" android:theme="@style/FanweiDialogActivityTheme"/> <activity android:configChanges="keyboardHidden|orientation|screenSize" android:launchMode="singleTop" android:name="com.fanwei.jubaosdk.wap.WapActivity" android:screenOrientation="portrait" android:theme="@style/FanweiActivityTheme"/> <provider android:authorities="com.dw.Dating.lua.fileProvider" android:exported="false" android:grantUriPermissions="true" android:name="android.support.v4.content.FileProvider"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths_fanwei"/> </provider> <activity android:name="com.pay.sdk.usage.PayActivity" android:screenOrientation="portrait"/> <activity android:name="sdk.pay.PayWebViewActivity" android:screenOrientation="portrait"/> <activity android:name="com.switfpass.pay.activity.QQWapPayWebView" android:screenOrientation="portrait" android:theme="@android:style/Theme.Translucent.NoTitleBar"/> <activity android:exported="true" android:launchMode="singleTop" android:name="com.dw.Dating.lua.wxapi.WXEntryActivity" android:theme="@android:style/Theme.NoDisplay"/> <meta-data android:name="UMENG_APPKEY" android:value="111"/> <meta-data android:name="UMENG_CHANNEL" android:value="Test"/> </application> </manifest> 根据这个数据生成完整的AndroidManifest.xml
07-19
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值