( 解答篇 )部分华为手机android10不走WXEntryActivity回调问题?
一、现象 这里以我遇到问题的华为机型举例:华为手机mate20(android 10),只需满足以下任意一个条件即可正常走回调WXEntryActivity登录,分享。如果你以下条件都不满足,则会出现微信登录授权后无法回调WXEntryActivity导致登录无反应问题,强烈建议你尝试满足以下5种条件的任意一个条件来验证。 1.用4g安装后可以正常登录(且后面切换为wifi也可),使用wifif安装,无法登录(切回4g也不可),区别在于安装时使用的是何种网络 2.取消微信的支付保护即可正常登录,分享 3.在华为市场安装的,可正常登录,分享 4.用开发工具android studio连接手机直接运行可以正常登录,分享(前提是将debug模式下运行的签名配置和正式打包的一致,不然运行微信登录是唤不醒的)(支付保护中心建议禁用usb调试就是因为这个能绕开华为支付保护中心的限制) 5.不引入百度联盟的包,可以正常登录,分享(猜测可能其他的第三方广告sdk也一样,看你用的是哪个,可以自己去剔除验证) 二、得出的结论 部分华为手机(有些华为andorid10的可以,所以标注了下部分)在华为支付保护中心将微信设置为保护状态下,华为手机会拦截安装来源为非华为市场,且在wifi状态下安装的含有百度联盟广告sdk包应用(但不会拦截调试模式下运行的应用调用的微信登录,分享)。 其实仔细想想也很合理,华为这么做是为了对支付保护中心保护的应用(比如微信),在被其他第三方应用唤起调用的时候,会检测该第三方应用是否为华为市场下载的安全应用,如果不是则会检测是否为恶意应用(即是否含有一些广告sdk),是否为风险wifi网络。 三、解决办法 知道了原因其实解决起来就有方向了,其实就是上面那5个条件,只需让用户的使用情况满足任意一条即可: 1.要么让用户使用4g进行安装 2.要么让用户取消对微信的支付保护 3.要么引导用户去华为市场进行下载安装 4.要么直接连接usb进行调试安装 5.要么剔除百度联盟的包 但是,你会发现 2,4 这两点引导用户是不太理想的,所以只能从1,,3,5这三点去引导和处理才符合逻辑, 所以最终的解决办法是这样的:引导你们华为手机的用户去华为市场进行下载安装(华为也是这么建议的),如果你们的应用没有在华为市场上架,那只有反馈给你们的业务或者老板进行评估是否需要考虑剔除相关的广告SDK包(如果允许的话),如果不考虑剔除,那只能联系并引导这部分用户重新卸载使用4g进行安装。 四、欢迎留言遇到问题的机型 遇到相关问题的兄弟,如果该篇文章对你们有用,欢迎你们留言发出来你们遇到该问题的机型,(如我遇到的mate20,android 10),以便我对该问题的机型方面进行统计。