在Android上安装apk往往有多种方式,但对于一般的操作来说有两种:1,通过U盘点击安装;2,通过网站、应用市场安装。

第一种安装方式会提示:“来历不明的应用会损坏。。。”,点击继续安装,才能进行下一步操作。

第二种安装方式会提示:“出于安全。。。”,需要在设置->应用 把对应的应用的未知来源应用设置为允许,才能继续安装。

跟踪安装Apk时的logcat输出,发现上面所描述的弹窗处理的代码在:frameworks/base/packages/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java

主要触发函数如下图

  1. 第一情况是由于此次安装没有发起方,引起了DLG_ANONYMOUS_SOURCE,继续深入解读代码,发现下一步仅仅是提示弹窗,并根据客户操作来确定是否继续安装,改法就比较简单,不弹窗直接安装即可。

+++ b/packages/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.ja
va
@@ -196,7 +196,10 @@ public class PackageInstallerActivity extends AlertActivity {case DLG_EXTERNAL_SOURCE_BLOCKED:return ExternalSourcesBlockedDialog.newInstance(mOriginatingPackage);case DLG_ANONYMOUS_SOURCE:
-                return AnonymousSourceDialog.newInstance();
+                //return AnonymousSourceDialog.newInstance();
+                mAllowUnknownSources = true;
+                initiateInstall();
+                break;}return null;}
  1. 第二种情况是由于安装发起方没有打开允许权限(可在 设置->应用 中的对应应用查看)导致的ExternalSourcesBlockedDialog,继续往下看代码流程,弹窗提示 “出于安全考虑,目前已禁止您的平板电脑安装来自此来源的未知应用。您可以在“设置”中对此进行更改。”,点击确定的话,会通过(ACTION_MANAGE_UNKNOWN_APP_SOURCES = "android.settings.MANAGE_UNKNOWN_APP_SOURCES")打开权限设置界面(packages/apps/Settings/AndroidManifest.xml 中关联内容如下图,有兴趣可以去研究代码)。

这种情况的改法也比较粗暴,无非就是自动赋予允许权限,直接上代码(参考packages/apps/Settings 中打开允许权限):

@@ -514,10 +517,29 @@ public class PackageInstallerActivity extends AlertActivity {// Shouldn't use static constant directly, see b/65534401.final int appOpCode =AppOpsManager.permissionToOpCode(Manifest.permission.REQUEST_INSTALL_PACKAGES);
-        final int appOpMode = mAppOpsManager.noteOpNoThrow(appOpCode, mOriginatingUid,
+        int appOpMode = mAppOpsManager.noteOpNoThrow(appOpCode, mOriginatingUid,mOriginatingPackage, mCallingAttributionTag,"Started package installation activity");if (mLocalLOGV) Log.i(TAG, "handleUnknownSources(): appMode=" + appOpMode);
+
+        if(AppOpsManager.MODE_ALLOWED != appOpMode){
+            try {
+                PackageManager mPm = this.getPackageManager();
+                PackageInfo mPackageInfo = mPm.getPackageInfo(mOriginatingPackage,
+                    PackageManager.MATCH_DISABLED_COMPONENTS |
+                    PackageManager.MATCH_ANY_USER |
+                    PackageManager.GET_SIGNATURES |
+                    PackageManager.GET_PERMISSIONS);
+                mAppOpsManager.setMode(AppOpsManager.OP_REQUEST_INSTALL_PACKAGES,
+                mPackageInfo.applicationInfo.uid, mOriginatingPackage, AppOpsManager.MODE_ALLOWED);
+            } catch(NameNotFoundException e) {
+                Log.e(TAG, "Exception:" + e);
+            }
+        }
+
+       appOpMode = mAppOpsManager.noteOpNoThrow(appOpCode, mOriginatingUid,
+                mOriginatingPackage, mCallingAttributionTag,
+                "Started package installation activity");switch (appOpMode) {case AppOpsManager.MODE_DEFAULT:mAppOpsManager.setMode(appOpCode, mOriginatingUid,
~

RK3568-Android12 关于去掉安装apk时提示“来历不明的。。。”和“出于安全。。。”的修改方法相关推荐

  1. 开机或者安装系统时提示tsc: Fast TSC calibration failed解决方法

    开机或者安装系统时提示tsc: Fast TSC calibration failed解决方法 参考文章: (1)开机或者安装系统时提示tsc: Fast TSC calibration failed ...

  2. 【Android 教程系列第 31 篇】通过 adb install 命令安装 apk 时提示 signatures do not match previously installed version

    这是[Android 教程系列第 31 篇],如果觉得有用的话,欢迎关注专栏. 遇到的一个小问题,做下记录. 一:问题描述 在使用 adb install 命令安装 apk 时,提示的内容如下 主要提 ...

  3. genymotion2.8.1安装apk时提示ARM……x86……异常处理

    这两天接触android studio,跟着教程,接触到genymotion模拟器,版本2.8.1-- 本人使用的模拟器配置为:google nuex4,android sdk4.4.4,安装微信时提 ...

  4. 安装apk时提示安装失败,相同包名但是签名不一致

    因为你原来安装的可能是没签名的apk(测试方便),后来安装的是签名后的apk,未卸载安装 同包名签名不同 会有这个问题 或者真的如提示所说,是因为同包签名不一致导致的.同包签名的话建议采用相同的key ...

  5. android安装apk时提示安装包异常导致安装失败,常见apk安装失败的错误及原因

    INSTALL_FAILED_NO_MATCHING_ABIS:主要是cpu架构不同导致需要的类库不同 INSTALL_FAILED_NO_MATCHING_ABIS is when you are ...

  6. android studio 安装apk失败,AndroidStudio安装apk时失败时提示INSTALL_PARSE_FAILED_NO_CERTIFICATES...

    安装apk时提示INSTALL_PARSE_FAILED_NO_CERTIFICATES错误,说明要安装的apk未进行签名,需签名后方可安装. 在android studio中增加签名方法,直接在ap ...

  7. Android11——【安装realese版本apk时提示“无效的安装包”或者“安装包解析出错”】解决方案

    环境配置 Android Studio 2020.3.1 问题描述 安装realese版本apk时提示"无效的安装包"或者"安装包解析出错". 问题分析 即:A ...

  8. 解决红米 10X手机USB安装apk时AS报错提示:INSTALL_FAILED_USER_RESTRICTED: Invalid apk

    解决红米 10X手机USB安装apk时AS报错提示: INSTALL_FAILED_USER_RESTRICTED: Invalid apk 我先不说多,直接说吧 1.把工程下面三个目录的文件删除 删 ...

  9. Eclipse中安装插件时提示:No repository found containing: osgi.bundle,org.eclipse.emf,2.8.0.v20180706-1146

    场景 在Eclipse中安装ERMaster时提示: No repository found containing: osgi.bundle,org.eclipse.emf,2.8.0.v201807 ...

最新文章

  1. 锚定比特币现金(BCH),助力构建价值互联网时代
  2. MySQL单表多字段模糊查询
  3. 市面上的hadoop书籍调研
  4. online游戏服务器架构--网络架构
  5. GDB动态库搜索路径
  6. 诗与远方:无题(七十九)- 望红云而作
  7. python设计函数isleapyear_Python实战练习——打印日历教程
  8. oracle rollup 排序,Oracle教程之rollup用法
  9. html单选按钮选中后取消选中,jquery实现单选按钮选中与取消选中
  10. 如何清理mac系统垃圾
  11. 混合选择集的坐标提起lisp_晓东CAD家园-论坛-A/VLISP-[LISP程序]:请教如何对选择集进行排序-我有(setq ss(ssget _w p0 p1 (list (0 . CIRC...
  12. C语言libiconv编程,libIconv.lib编码库的生成和使用
  13. 用U盘PE启动安装系统教程
  14. Pyke 逻辑编程入门(16):知识库之“问题库”
  15. R数据分析:论文中的轨迹的做法,潜增长模型和增长混合模型
  16. 海思芯片固件修改工具_魔百盒九联代工M301H海思Hi3798MV310芯片红外蓝牙语音遥控免拆卡刷固件及刷机教程202009版...
  17. 条形码转化成二维码_在线条形码生成器
  18. 苹果手机电池健康怎么看_打开手机这个功能,就能知道手机电池的健康度,安卓苹果都可以!...
  19. The REBOL Scripting Language 读后感
  20. 几种概率分布(伯努利分布、二项分布、泊松分布、均匀分布、正态分布、指数分布、伽马分布)

热门文章

  1. Dragger2好网文整合
  2. 每日一句,每日10词【2】(26天)
  3. oracle通过触发器自动更新表的修改时间
  4. matlab 低级图形错误,解决低级图形问题 - MATLAB Simulink - MathWorks 中国
  5. Acwing222_青蛙的约会_同余方程
  6. Fedora 17 安装完全指南 for y450[zz]
  7. 你们要的金海霸气bgm,直接复制打开就ok,京胡版本
  8. JSP+SQL实现留言功能(含留言回复功能),附源码
  9. java鼠标滑入换图片_超简单---鼠标滑过变换图片
  10. 关于GPS DOP的理解(HDOP)