android 11 上配置微信授权、判断是否安装微信或支付宝 、h5 拉起支付问题

详情解释见: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/

    image.png

  • 第二步:根据提示打开https://developers.weixin.qq.com/doc/oplatform/Mobile_App/Access_Guide/Android.html#jump2

    image.png

  • 第三步:在AndroidManifest.xml里面配置中增加标签,即可解决以上影响

//声明所要进行交互的应用名

  
    ...
  
    // 在应用的AndroidManifest.xml添加如下标签
    
           // 指定微信包名
    
  
    ...
  

当时被产品搞死了,一脸的蒙蔽,网上搜索了半天结果没有找到解决方案,最后在微信开发平台看到了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 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 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

//声明所要进行交互的应用名

   //微信包名
    
   //支付宝包名
    

你可能感兴趣的:(android 11 上配置微信授权、判断是否安装微信或支付宝 、h5 拉起支付问题)