Android Version : 8.1

使用场景 : 在Rk3288w Android 8.1 的测试设备上安装 "文件管理器" 应用程序 , 若打开***.apk文件,会出现  解析包错误  提示,即安装失败,影响使用.

如下为ActivityManagerService.java 中的Log信息.

06-29 08:37:56.559 W/ActivityManager(  369): For security reasons, the system cannot issue a Uri permission grant to content://com.example.filetest.fileprovider/root_path/D007-6A31/Android_APK/weibo.apk [user 0]; use startActivityAsCaller() instead
06-29 08:37:56.561 E/ActivityManager(  369): getPackageFerformanceMode--ComponentInfo{com.android.packageinstaller/com.android.packageinstaller.InstallStart}----com.android.packageinstaller

最终 错误信息 的Log.

06-29 08:37:56.768 W/ActivityManager(  369): Permission Denial: opening provider androidx.core.content.FileProvider from ProcessRecord{91d037 1469:com.android.packageinstaller/u0a14} (pid=1469, uid=10014) that is not exported from UID 1000
06-29 08:37:56.759 E/hwc_rk  (  236): hwc_get_handle_layername:cann't get value from gralloc
06-29 08:37:56.768 W/InstallStaging( 1469): Error staging apk from content URI
06-29 08:37:56.768 W/InstallStaging( 1469): java.lang.SecurityException: Permission Denial: opening provider androidx.core.content.FileProvider from ProcessRecord{91d037 1469:com.android.packageinstaller/u0a14} (pid=1469, uid=10014) that is not exported from UID 1000
06-29 08:37:56.768 W/InstallStaging( 1469):     at android.os.Parcel.readException(Parcel.java:2013)
06-29 08:37:56.768 W/InstallStaging( 1469):     at android.os.Parcel.readException(Parcel.java:1959)
06-29 08:37:56.768 W/InstallStaging( 1469):     at android.app.IActivityManager$Stub$Proxy.getContentProvider(IActivityManager.java:4758)
06-29 08:37:56.768 W/InstallStaging( 1469):     at android.app.ActivityThread.acquireProvider(ActivityThread.java:5836)
06-29 08:37:56.768 W/InstallStaging( 1469):     at android.app.ContextImpl$ApplicationContentResolver.acquireUnstableProvider(ContextImpl.java:2526)
06-29 08:37:56.768 W/InstallStaging( 1469):     at android.content.ContentResolver.acquireUnstableProvider(ContentResolver.java:1780)
06-29 08:37:56.768 W/InstallStaging( 1469):     at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:1394)
06-29 08:37:56.768 W/InstallStaging( 1469):     at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:1247)
06-29 08:37:56.768 W/InstallStaging( 1469):     at android.content.ContentResolver.openInputStream(ContentResolver.java:967)
06-29 08:37:56.768 W/InstallStaging( 1469):     at com.android.packageinstaller.InstallStaging$StagingAsyncTask.doInBackground(InstallStaging.java:180)
06-29 08:37:56.768 W/InstallStaging( 1469):     at com.android.packageinstaller.InstallStaging$StagingAsyncTask.doInBackground(InstallStaging.java:174)
06-29 08:37:56.768 W/InstallStaging( 1469):     at android.os.AsyncTask$2.call(AsyncTask.java:333)
06-29 08:37:56.768 W/InstallStaging( 1469):     at java.util.concurrent.FutureTask.run(FutureTask.java:266)
06-29 08:37:56.768 W/InstallStaging( 1469):     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:245)
06-29 08:37:56.768 W/InstallStaging( 1469):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
06-29 08:37:56.768 W/InstallStaging( 1469):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
06-29 08:37:56.768 W/InstallStaging( 1469):     at java.lang.Thread.run(Thread.java:764)

根据Log中显示 ,主要是FileProvider权限不足以使用系统UID所导致.

结合ActivityManagerService中的Log,定位至:frameworks\base\services\core\java\com\android\server\am\ActivityManagerService.java

    int checkGrantUriPermissionLocked(int callingUid, String targetPkg, GrantUri grantUri,final int modeFlags, int lastTargetUid) {****************************************************************// Bail early if system is trying to hand out permissions directly; it// must always grant permissions on behalf of someone explicit.final int callingAppId = UserHandle.getAppId(callingUid);if ((callingAppId == SYSTEM_UID) || (callingAppId == ROOT_UID)) {if ("com.android.settings.files".equals(grantUri.uri.getAuthority())|| "com.example.filetest.fileprovider".equals(grantUri.uri.getAuthority())) {// Exempted authority for cropping user photos in Settings app} else {Slog.w(TAG, "For security reasons, the system cannot issue a Uri permission"+ " grant to " + grantUri + "; use startActivityAsCaller() instead");return -1;}}****************************************************************}

有此可以看出来,AMS打出错误信息是因为 com.example.filetest 具有  android:sharedUserId="android.uid.system"  属性;

若按照Android 8.0 以上修改,默认拥有权限的只有   com.android.settings.files   其他均不授予权限,直接跳出方法.

故而解决办法如上,在 checkGrantUriPermissionLocked() 此方法中,添加包名,即可不跳出此方法,授予安装权限.

最后单编 framework 层 Push进机器中,问题解决.

Android 解析软件包时出现问题 -- Error staging apk from content URI相关推荐

  1. Android 解析软件包时出现问题

    Android 解析软件包时出现问题 解决方案:Settings -> Build,Execution,Deployment -> Instant Run -> 取消这个功能. 以下 ...

  2. Android 打包解析软件包时出现问题

    今天突然遇到高版本打包解析软件包时出现问题,最后发现 android:appComponentFactory="" android:appComponentFactory 这个导致 ...

  3. vivo s15真机调试 解析软件包时出现问题

    我用的 vivo s15,Android Studio 报错内容: 11/24 18:34:45: Launching 'app' on vivo V2203A. Installation did n ...

  4. 调用系统安装软件时出现“解析软件包时出现问题”

    如下代码调用系统安装apk软件时提示"解析软件包时出现问题" 真机调试 HTC tattoo g4 android1.6 前提:路径和文件绝对没有问题 String filePat ...

  5. Android Studio打包apk后手机无法安装 提示 “解析软件包时出现问题”

    Android_Studio打包 前一周公司要求学习android 开发,安装好环境,今天做了一个小页面后,使用build 命令打包好后,手机提示手机提示安装包解析失败.在此记录一下在网上找到的解决方 ...

  6. 安卓 解析软件包时出现问题

    怎么也没想到代码问题会导致这种情况! 此前在SharedPreferences清空时应该放long类型的0L,结果放了个0. 初始化读取时就出错了,尽然不报错指出来是哪里

  7. uniapp 打包之后,部分安卓手机不能安装提示“解析软件包时出现问题”

    原因 基本上这个问题都是在minSdkVersion要求版本太高 相关文档:https://ask.dcloud.net.cn/article/193 操作 manifest.json > AP ...

  8. AS 在用vivo x9手机运行程序时,出现“解析软件包时出现问题”的问题。

    解决方法: 打开as 的setting界面,把instant run 界面的 enable 前面的√去掉,如下图:

  9. android项目编译时提示找不到*.apk(could not find the *.apk)

    eclipse编译时找不到*.apk这个问题,折磨了我很久,google很多遍,都没有适合我的方法. 搜到的结果大体有以下解决方案: 1.修改windows的locaiton 2.project属性的 ...

最新文章

  1. 【Prometheus】PromQL 万字详解
  2. 字符扫描剑指Offer读书笔记之第二章2字符替换Strut2教程-java教程
  3. python threading condition使用_Python threading模块condition原理及运行流程详解
  4. 构建之法第三章软件工程师的成长
  5. ▼▲Delphi面向对象编程的20条规则
  6. python自动化办公:word篇。职场高手不是梦。
  7. 【转】Wireshark网络抓包(四)——工具
  8. LeetCode 6034. 数组的三角和
  9. 三国演义告诉我们的60个道理
  10. Kotlin学习笔记 第四章 Java调用Kotlin
  11. 构建复杂的应用程序 —— 重用与重构
  12. PLC与常用设备的连接
  13. Ajax运用json数组传输数据
  14. POJ - 1182(种类并查集)
  15. matlab中饱和函数怎么写,matlab中饱和函数如何表示呢
  16. 全球(全国)土地利用数据集获取大全/植被类型分布/NDVI数据/NPP数据/径流量数据/降雨量气温气象数据/蒸散量数据/太阳辐射数据
  17. 虚拟机下搭建一个dns服务器,虚拟机下DNS服务器配置.doc
  18. 机房服务器配置方案文件,机房改造/机房搬迁实施方案及步骤
  19. Python怎么读?
  20. 商标销售可以是有利可图的业务

热门文章

  1. Django个人博客开发练手demo笔记
  2. vue 二维码+条形码识别
  3. 集成电路——概念、发展分类和IC卡
  4. python猜字游戏猜三次_python 猜字游戏
  5. WP版网易云,解决启动慢问题
  6. vue2.x的h函数(createElement)与vue3中的h函数
  7. 你真的了解promise.resolve()吗
  8. 华中科技大-汉明校验码设计
  9. android 电子书源码,翻页效果
  10. transformer中相对位置编码理解