使用weiXinRecorded不支持targetSdkVersion升级23及以上问题的解决方案

  • 1.最近维护的项目中用到了 weiXinRecorded图片选择,导致项目targetSdkVersion不能升级到23及以
     上
  • 2.在Android 9.0出来之后,对存储及拍照权限,更改为了:允许,询问,拒绝,比之前的允许,拒绝,多了一个询问的状态,就必须要用到动态请求权限,  相矛盾的是 动态权限是api 23  android 6.0以后的特性,项目为22及以下
  • 3.解决办法:谷歌官方针对,这一特殊情况,也做了相应的解决方案:
      在app moudle 的build.gradle 中添加:
      注意:是V4包中
implementation 'com.android.support:support-v4:support-core-utils-25.1.0'
  
  
implementation 'com.android.support:support-v4:support-compat-25.1.0'
  • 在对应类中需要使用的地方  调用(如点击事件,跳转页面之前等)  
    获取相应权限
    private void getPermissions() {
      
      
          int permission = PermissionChecker.checkSelfPermission(context,
                    android.Manifest.permission.WRITE_EXTERNAL_STORAGE);
                    
            int cemerms = PermissionChecker.checkSelfPermission(context,
                    android.Manifest.permission.CAMERA);
          //0成功  -1失败
            if (permission == PermissionChecker.PERMISSION_GRANTED && cemerms == PermissionChecker.PERMISSION_GRANTED) {
    
    
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                    if (checkSelfPermission(getActivity(), Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager
                            .PERMISSION_GRANTED ||
                            checkSelfPermission(getActivity(), Manifest.permission.RECORD_AUDIO) != PackageManager
                                    .PERMISSION_GRANTED ||
                            checkSelfPermission(getActivity(), Manifest.permission.CAMERA) != PackageManager
                                    .PERMISSION_GRANTED ||
                            checkSelfPermission(getActivity(), Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager
                                    .PERMISSION_GRANTED) {
    
                        //不具有获取权限,需要进行权限申请
                        ActivityCompat.requestPermissions(getActivity(), new String[]{
                                Manifest.permission.WRITE_EXTERNAL_STORAGE,
                                Manifest.permission.CAMERA,
                                Manifest.permission.RECORD_AUDIO,
                                Manifest.permission.READ_EXTERNAL_STORAGE}, GET_PERMISSION_REQUEST);
    
                    } else {
                        startActivity(new Intent(getActivity(), LoginAcitivty.class));
    
                    }
                } else {
                    startActivity(new Intent(getActivity(), LoginAcitivty.class));
                }
            }else{
            
            
            
                //写个弹出框,让用户去手动开启权限
                
                toSelfSetting(MyApplication.getContext());
                
                
            }
            
            <!--跳往应用设置页面-->
            public static void toSelfSetting(Context context) {
            
            Intent mIntent = new Intent();
            mIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            if (Build.VERSION.SDK_INT >= 9) {
                mIntent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS");
                mIntent.setData(Uri.fromParts("package", context.getPackageName(), null));
            } else if (Build.VERSION.SDK_INT <= 8) {
                mIntent.setAction(Intent.ACTION_VIEW);
                mIntent.setClassName("com.android.settings", "com.android.setting.InstalledAppDetails");
                mIntent.putExtra("com.android.settings.ApplicationPkgName", context.getPackageName());
            }
            context.startActivity(mIntent);
        }
发布了27 篇原创文章 · 获赞 68 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/weixin_40611659/article/details/89237761
今日推荐