当我在去调用微信的登录界面,或者其他支付界面,
WXEntryActivity又一个界面,这样看起来很不协调
(WXEntryActivity类finish的时候会有闪屏的效果)。
为了让用户感觉只是拉起了一个授权界面,需要加上
android:theme="@android:style/Theme.Translucent"
使WXEntryActivity变成透明,这样在跳转的过程中就感觉不到WXEntryActivity的存在了
<!-- wx start --><activityandroid:name=".wxapi.WXPayEntryActivity"android:theme="@android:style/Theme.Translucent"android:screenOrientation="portrait"android:exported="true"android:launchMode="singleTop" /><activityandroid:name=".wxapi.WXEntryActivity"android:theme="@android:style/Theme.Translucent"android:screenOrientation="portrait"android:exported="true"android:launchMode="singleTop" /><!-- wx end -->
补充:
如果你的编译版本是Android8.0 的话,可能会抛出以下异常:
这个因为Android 8.0 限制了,透明主题和 页面方向限制,只能二选一,那我这就删掉其中一项即可。
那我这里的处理就删掉了 android:screenOrientation="portrait"
这个处理只针对Android 8.0
但是在调试过程中WXEntryActivity,
会自动finish还有如果里面做耗时操作的话
(比如根据code请求access_token等),
该activity在部分手机不会被finish,
并且code has been used....根据调试最好不要在这个activity做耗时操作。
总结:遇到问题分析要认真分析.拿微信的第三方登录闪屏白屏等问题为例:
点击微信登录(第一个界面)-----跳转到授权页面(第二个界面),
然后在该界面点击确认登录按钮-----回调到WXEntryActivity界面
(这个界面会让用户感受到白屏或则闪屏等问题,最好不要做耗时操作)
这个界面耗时后调用finish不管用,
貌似它自己会自动finish(第三个界面)-----回到了最初的登录界面(第一个界面)。
所以只需要解决WXEntryActivituy这个activity成透明,用户就感觉不到它的存在了,
也就不会感觉到闪屏以及白屏等问题了。
另外就是登陆后,或者分享后。
点击返回自己的APP。黑屏的情况下,只能再次点击再能返回到自己的app.
这里的原因就是点击返回的时候,
我们在WXEntryActivity 中去判断返回值。
根据返回值,去判断,去做页面的处理
当然也是我最近遇到的一个做的时候遇到的一个问题,可能大家遇到的情况都不一样。我这里就分享遇到的问题和处理的方式。
在回调中onResp,
这里的话我就去拿到BaseResp.getType().去判断去做处理
当然我这里判断拿出来的 分享的返回值是
BaseResp.getType() == 1;则为微信登陆,
BaseResp.getType() == 0;则为微信分享。
(当然这里根据自己去判断的为准。其实我不知道这值会不会变)