详情解释见:https://developer.android.google.cn/training/basics/intents/package-visibility
问题一:
android 11 微信授权会提示:MicroMsg.SDK.WXApiImplV10: sendReq failed for wechat app signature check failed
解决方法:微信官方给出相对应的解决方案
-
第一步:打开微信开放平台https://open.weixin.qq.com/
-
第二步:根据提示打开https://developers.weixin.qq.com/doc/oplatform/Mobile_App/Access_Guide/Android.html#jump2
第三步:在
AndroidManifest.xml
里面配置中增加<queries>
标签,即可解决以上影响
//声明所要进行交互的应用名
<manifest package="com.example.app">
...
// 在应用的AndroidManifest.xml添加如下<queries>标签
<queries>
<package android:name="com.tencent.mm" /> // 指定微信包名
</queries>
...
</manifest>
当时被产品搞死了,一脸的蒙蔽,网上搜索了半天结果没有找到解决方案,最后在微信开发平台看到了android11授权问题
问题二
1:android 11 h5界面一直拉起不来微信或支付宝支付
2:android 11 判断是否安装微信、支付宝 一直返回false
package com.dsy.tui.tools;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.net.Uri;
import java.util.List;
public class IsInstallApp {
public static boolean checkApkExist(Context context, String packageName) {
if (packageName == null || "".equals(packageName))
return false;
try {
ApplicationInfo info = context.getPackageManager().getApplicationInfo(packageName,
PackageManager.GET_UNINSTALLED_PACKAGES);
return true;
} catch (PackageManager.NameNotFoundException e) {
return false;
}
}
/**
* 检测是否安装支付宝
* @return * @param context
*/
public static boolean checkAliPayInstalled(Context context){
Uri uri = Uri.parse("alipays://platformapi/startApp");
Intent intent = new Intent(Intent.ACTION_VIEW,uri);
ComponentName componentName = intent.resolveActivity(context.getPackageManager());
return componentName!=null;
}
/**
* 判断 用户是否安装微信客户端
*/
public static boolean isWeixinAvilible(Context context){
final PackageManager packageManager = context.getPackageManager(); //获取packagemanager
List<PackageInfo> pinfo =packageManager.getInstalledPackages(0);// 获取所有已安装程序的包信息
if (pinfo !=null){
for (int i = 0; i < pinfo.size(); i++) {
String pn = pinfo.get(i).packageName;
if (pn.equals("com.tencent.mm")){
return true;
}
}
}
return false;
}
/**
* 判断 用户是否安装QQ客户端
*/
public static boolean isQQClientAvaolable(Context context){
final PackageManager packageManager = context.getPackageManager();
List<PackageInfo> pinfo = packageManager.getInstalledPackages(0);
if (pinfo !=null){
for (int i = 0; i < pinfo.size(); i++) {
String pn = pinfo.get(i).packageName;
if (pn.equalsIgnoreCase("com.tencent.qqlite")||pn.equalsIgnoreCase("com.tencent.mobileqq")){
return true;
}
}
}
return false;
}
}
打印日志:
支付宝: false
微 信: false
//声明所要进行交互的应用名
<queries>
//微信包名
<package android:name="com.tencent.mm" />
//支付宝包名
<package android:name="com.eg.android.AlipayGphone" />
</queries>