aosp29系统开发,某些内置三方应用要求默认授予安装权限用于升级,但是Android10出于安全考虑,默认安装升级包需要用户授权。出现如下提示:
设置通过后还会提示确认框
方案一:将所有app默认授予权限
源码路径android>frameworks>base>core>java>android>app>AppOpsManager.java
注释掉// AppOpsManager.MODE_DEFAULT, // REQUEST_INSTALL_PACKAGES
改为 AppOpsManager.MODE_ALLOWED,
方案二:根据包名给予权限(推荐)
源码路径android/frameworks/base/packages/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java
/**
* 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_EXTERNAL_SOURCE_BLOCKED:
// add begin
//在184行。去掉弹出对应报名对话框
if(mPkgInfo!=null&&"net.***".equals(mPkgInfo.packageName)){
mAllowUnknownSources = true;
//initiateInstall(); 显示确认对话框
startInstall();//直接升级
return null;
}
// add end
return ExternalSourcesBlockedDialog.newInstance(mOriginatingPackage);
case DLG_ANONYMOUS_SOURCE:
return AnonymousSourceDialog.newInstance();
}
return null;
}
这种方法可以根据包名过滤授权,相对更加安全。并且可以根据实际情况选择initiateInstall()或者startInstall()来决定是否显示确认安装提示框。