集成微信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申请成功后改签名不生效?
这是因为微信缓存了你之前的签名文件,把微信重装一下就可以了!