Android9--android 10.0 去掉未知来源弹窗 默认授予安装未知来源权限

在9.0 以前的设备中,安装未来来源的权限开关 可以在SettingsProvider.app中的
DateHelper.java中通过一个config.xml中的 开关打开 就可以了 但是9.0以后 就不行了
需要在AppOpsManager.java中给与权限
接下来看下源码分析问题
路径:frameworks/base/core/java/android/app/AppOpsManager.java

其中代码里面有这么一句

AppOpsManager.MODE_DEFAULT, // OP_REQUEST_INSTALL_PACKAGES
把它修改成

AppOpsManager.MODE_ALLOWED, // OP_REQUEST_INSTALL_PACKAGES
然后,在framework 中PackageInstaller的app中修改,这里处理整个安装app的过程

安装之前会判断安装权限什么的 主要由PackageInstallerActivity.java来处理

径:frameworks/base/packages/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java

分析PackageInstallerActivity.java 源码

protected void onCreate(Bundle icicle) {
      getWindow().addSystemFlags(SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS);
 
      ......
      checkIfAllowedAndInitiateInstall();
     // 安装前检查是否有权限
  }
  private void checkIfAllowedAndInitiateInstall() {
       .....
      if (mAllowUnknownSources || !isInstallRequestFromUnknownSource(getIntent())) {
        initiateInstall();
      } else {
           .....
          } else {
            // 检查如果未知来源进入
              handleUnknownSources();
          }
      }
  }
  private void handleUnknownSources() {
    if (mOriginatingPackage == null) {
        Log.i(TAG, "No source found for package " + mPkgInfo.packageName);
        showDialogInner(DLG_ANONYMOUS_SOURCE);
        return;
    }
。。。。。
}

 /**
 * Create a new dialog.
 *
 * @param id The id of the dialog (determines dialog type)
 *
 * @return The dialog
 */
private DialogFragment createDialog(int id) {
    switch (id) {
        case DLG_PACKAGE_ERROR:
            return SimpleErrorDialog.newInstance(R.string.Parse_error_dlg_text);
       //省略一堆代码
        case DLG_EXTERNAL_SOURCE_BLOCKED:
            return ExternalSourcesBlockedDialog.newInstance(mOriginatingPackage);
        case DLG_ANONYMOUS_SOURCE:
                   return AnonymousSourceDialog.newInstance();
		     break;
    }
    return null;
}

case DLG_ANONYMOUS_SOURCE 这里就会弹出未知来源弹窗
所以默认给与权限就这样修改:
修改 如下:

             case DLG_ANONYMOUS_SOURCE:
                //去掉弹出AnonymousSourceDialog对话框 默认安装
-                return AnonymousSourceDialog.newInstance();
+                mAllowUnknownSources = true;
+                 initiateInstall();
+                            break;
+                //return AnonymousSourceDialog.newInstance();
         }
         return null;
     }
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值