Android 解析软件包时出现问题 -- Error staging apk from content URI
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相关推荐
- Android 解析软件包时出现问题
Android 解析软件包时出现问题 解决方案:Settings -> Build,Execution,Deployment -> Instant Run -> 取消这个功能. 以下 ...
- Android 打包解析软件包时出现问题
今天突然遇到高版本打包解析软件包时出现问题,最后发现 android:appComponentFactory="" android:appComponentFactory 这个导致 ...
- vivo s15真机调试 解析软件包时出现问题
我用的 vivo s15,Android Studio 报错内容: 11/24 18:34:45: Launching 'app' on vivo V2203A. Installation did n ...
- 调用系统安装软件时出现“解析软件包时出现问题”
如下代码调用系统安装apk软件时提示"解析软件包时出现问题" 真机调试 HTC tattoo g4 android1.6 前提:路径和文件绝对没有问题 String filePat ...
- Android Studio打包apk后手机无法安装 提示 “解析软件包时出现问题”
Android_Studio打包 前一周公司要求学习android 开发,安装好环境,今天做了一个小页面后,使用build 命令打包好后,手机提示手机提示安装包解析失败.在此记录一下在网上找到的解决方 ...
- 安卓 解析软件包时出现问题
怎么也没想到代码问题会导致这种情况! 此前在SharedPreferences清空时应该放long类型的0L,结果放了个0. 初始化读取时就出错了,尽然不报错指出来是哪里
- uniapp 打包之后,部分安卓手机不能安装提示“解析软件包时出现问题”
原因 基本上这个问题都是在minSdkVersion要求版本太高 相关文档:https://ask.dcloud.net.cn/article/193 操作 manifest.json > AP ...
- AS 在用vivo x9手机运行程序时,出现“解析软件包时出现问题”的问题。
解决方法: 打开as 的setting界面,把instant run 界面的 enable 前面的√去掉,如下图:
- android项目编译时提示找不到*.apk(could not find the *.apk)
eclipse编译时找不到*.apk这个问题,折磨了我很久,google很多遍,都没有适合我的方法. 搜到的结果大体有以下解决方案: 1.修改windows的locaiton 2.project属性的 ...
最新文章
- 【Prometheus】PromQL 万字详解
- 字符扫描剑指Offer读书笔记之第二章2字符替换Strut2教程-java教程
- python threading condition使用_Python threading模块condition原理及运行流程详解
- 构建之法第三章软件工程师的成长
- ▼▲Delphi面向对象编程的20条规则
- python自动化办公:word篇。职场高手不是梦。
- 【转】Wireshark网络抓包(四)——工具
- LeetCode 6034. 数组的三角和
- 三国演义告诉我们的60个道理
- Kotlin学习笔记 第四章 Java调用Kotlin
- 构建复杂的应用程序 —— 重用与重构
- PLC与常用设备的连接
- Ajax运用json数组传输数据
- POJ - 1182(种类并查集)
- matlab中饱和函数怎么写,matlab中饱和函数如何表示呢
- 全球(全国)土地利用数据集获取大全/植被类型分布/NDVI数据/NPP数据/径流量数据/降雨量气温气象数据/蒸散量数据/太阳辐射数据
- 虚拟机下搭建一个dns服务器,虚拟机下DNS服务器配置.doc
- 机房服务器配置方案文件,机房改造/机房搬迁实施方案及步骤
- Python怎么读?
- 商标销售可以是有利可图的业务