集成微信sdk踩到的坑

集成微信SDK踩到的坑

2017-12-13 10:22:18 星期三

前言:这是个人在实战开发中踩到的坑,想到会有很多同行会遇到跟我一样的问题,故整理一下发布出来.

1. 微信分享等功能需要打包后才能用,或者debug版的能用,打包后不能用啦??

这是因为在微信申请appkey的时候填的是release或者debug版的应用签名
我们可以在app里的build.gradle里这样设置:

        android{
             signingConfigs {
                    config {
                    keyAlias '***'//打包时的keyAlias
                    keyPassword '******'//打包时的keyPassword
                    storeFile file('E:/my project/AYK/ayk.jks')//你项目的签名文件路径   注意如果签名文件换了路径,记得改这里哦!
                    storePassword '*******'//打包时的storePassword
                }
                    //在这里设置replease版和debug版都使用同一个签名文件
                  buildTypes {
                    release {
                        minifyEnabled false
                        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
                        signingConfig signingConfigs.config
                    }
                    debug {
                        signingConfig signingConfigs.config
                    }
                }
            }

2. 微信分享没有回调

这种基本上就是包搞错了,activity必须要在申请app时的包名+wxapi 下,回调的类名必须是WXEntryActivity 而且要这个activity设置android:exported=”true”.

3. 在webview里调起微信支付

需要重写WebViewClient里的shouldOverrideUrlLoading()方法,代码如下:
“`java
webview.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
try {
if(url.startsWith(“weixin://”) || url.startsWith(“alipays://”) ||
url.startsWith(“mailto://”) || url.startsWith(“tel://”)|| url.startsWith(“mqqapi://”)
//其他自定义的scheme
) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);
return true;
}
} catch (Exception e) { //防止crash (如果手机上没有安装处理某个scheme开头的url的APP, 会导致crash)
TabToast.makeText(“抱歉,没有安装该应用”,WebViewActivity.this);
return false;
}
//处理http和https开头的url
view.loadUrl(url);
return true;
}
});

4. 在appkey申请成功后改签名不生效?

这是因为微信缓存了你之前的签名文件,把微信重装一下就可以了!

你可能感兴趣的:(微信开发)