Android8.0 下载APK 安装无响应

版权声明:转载请说明出处 https://blog.csdn.net/qq_42046338/article/details/89641012

前言: 由于公司不想用 阿里的、腾讯的 热更新和热修复,所以只能自己写和后台哥们一起,想法调用底层C 进行交互下载可以完成差异下载和重新安装的需求,完成了 Android 7.0的私有文件夹 URI 的 路径判断和转换,但是测试机是android8.0的原因,在下载完成会进行一个无法拉起Intent进行安装,后期查看官方API 才发现在Android 8.0 又新加了一项权限“安装未知应用”。

     清单文件中的 权限项

        <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>

 判断Android 8.0的代码

 if (Build.VERSION.SDK_INT>26){
          //查看是否打开权限
  boolean b = getPackageManager().canRequestPackageInstalls();
          if (b){
                  //打开直接进行更新安装
                     upDate();
                }else {
                   //没有打开进行 回调进行申请和跳转
         ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.REQUEST_INSTALL_PACKAGES}, DIME);
                    }
           }else {
                    // 如果不是Android 8.0直接进行 Android 7.0封装到 下载的时调用的地方了
                    upDate();
                }

  回调   代码编写展示

   

 @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        //将 requestCode 放到switch 进行比对一方遇到很多的权限申请等问题
        switch (requestCode) {
            //  DIME我们申请权限的   int
            case DIME:
                //权限的长度 和权限打开的判断 如果打开 直接进行安装
                if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    upDate();
                } else {
                    //如果没有那就进行Toast 进行显示,并使用Handler 演示2秒进行跳转
                    ToastUtils.showLong("需要打开CoinNew未知来源安装权限");
                    new Handler(getMainLooper()).postDelayed(new Runnable() {
                        @Override
                        public void run() {
                            //重中之重  使用意图打开我们手机的安装未知应用的页面  为什么要打开
                            //因为此权限是需要用户手动打开我们无法进行强制打开
                            Intent intent = new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES);
                            ((Activity)MainActivity.this).startActivityForResult(intent,DIME);
                        }
                    },2000);
                }
                break;
        }
    }

  附上 安装未知应用的界面     如果看不懂请看Android 动态授权教学

 咋们Intent 就会跳转到 第一张图片的界面,需要用户手动打开。

 如若需要差异化更新代码可联系博主QQ 1424817390 差异化更新组件包 jni包 .h 和Android.mk 等C 代码

 

 封装到极致,   注册查看本地的版本, 发起更新地址和成功失败回调网络请求等无需关心。

猜你喜欢

转载自blog.csdn.net/qq_42046338/article/details/89641012