首先,我反復確認了三次以上,配置的簽名沒有問題,打包后的簽名沒有問題, request.checkArgs()返回true,然后——
同一個包,在測試機上有的手機能調出支付界面,有的不能,然而在調起支付失敗的手機上,登錄我的微信就可以調出,登錄我同事的就不行。
最后發現的問題是:微信會對之前的調用生成緩存,如果你之前安的本來是debug(未簽名)的包,那時候點擊微信支付失敗了,微信緩存下了這個狀態,當你重新安裝release(已簽名)的包再調用時,會依然返回-1調起失敗。這個問題我試過的是這樣,甚至在我先安了release調起成功之后,卸載App,安裝debug版,這時候的第一次點擊也是可以喚起支付界面的。
so,解決辦法是:
1.重啟下手機或者清理下微信的緩存
如果不行,先表摔手機——>
2.清空微信數據
要還是不行——>
3.卸載重裝微信
一般這樣是OK了
當然了,得看具體情況,如果你試了我說這些依然不OK,那么你可以摔手機,但是不能罵人
順便記錄一下,微信支付成功后,回調界面關閉時會有一個閃屏(有的手機是沒有的),這是因為WXPayEntryActivity本身是一個空白界面,finish時會有閃屏的效果,
解決這個問題只需要將WXPayEntryActivity變成透明:
android:theme="@android:style/Theme.Translucent"
這樣視覺上就感受不到它的finish效果。
微信登錄與微信分享同回調WXEntryAcitivity,區別是BaseResp.getType()返回值不同
BaseResp.getType() == 1;則為微信登陸,
BaseResp.getType() == 2;則為微信分享(之前好像是0)