系统方向学习9--android 10.0 去掉未知来源弹窗 默认授予安装未知来源权限

Posted 怀化纱厂杨二狗

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了系统方向学习9--android 10.0 去掉未知来源弹窗 默认授予安装未知来源权限相关的知识,希望对你有一定的参考价值。


活动地址:CSDN21天学习挑战赛

 最近跟着CSDN大佬,参与一个 21天打卡的活动 

Android framework开发者带你参加21天学习挑战赛活动_安卓兼职framework应用工程师的博客-CSDN博客

今天学习的

android 10.0 去掉未知来源弹窗 默认授予安装未知来源权限_安卓兼职framework应用工程师的博客-CSDN博客_android 未知来源权限

在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;
     


 

以上是关于系统方向学习9--android 10.0 去掉未知来源弹窗 默认授予安装未知来源权限的主要内容,如果未能解决你的问题,请参考以下文章

系统方向学习9--android 10.0 去掉未知来源弹窗 默认授予安装未知来源权限

系统方向学习9--android 10.0 去掉未知来源弹窗 默认授予安装未知来源权限

系统方向学习总结2--Android 10.0 SystemUI默认去掉底部导航栏的三种方法

系统方向学习总结2--Android 10.0 SystemUI默认去掉底部导航栏的三种方法

系统方向学习总结2--Android 10.0 SystemUI默认去掉底部导航栏的三种方法

系统方向学习总结1--Android 10.0 Settings 显示菜单增加选择屏幕密度选项