google play安装后打开Fc或点击下载时Crash

本文涉及的产品
函数计算FC,每月15万CU 3个月
简介:

本文主要介绍google play fc, java.lang.SecurityException: Invalid value for is_public_api: null异常的解决方法及具体原因

今天@互联网的那些事转发了三星行货S3手机居然压根儿就不能打开google play商店的问题,会发现很多rom都有这个问题。

sansumg fc
xiaomi fc
那么就顺便介绍下解决的方法吧@三星。

1、异常信息:

很多第三方android rom去掉google play后,用户从第三方应用市场下载google play安装后打开Fc或点击下载时Crash
异常信息如下:

1

2

3

4

5

6

7

8

9

Writing exception to parcel

java.lang.SecurityException: Invalid value for is_public_api: null

at com.android.providers.downloads.DownloadProvider.enforceAllowedValues(DownloadProvider.java:942)

at com.android.providers.downloads.DownloadProvider.checkInsertPermissions(DownloadProvider.java:856)

at com.android.providers.downloads.DownloadProvider.insert(DownloadProvider.java:550)

at android.content.ContentProvider$Transport.insert(ContentProvider.java:205)

at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:148)

at android.os.Binder.execTransact(Binder.java:367)

at dalvik.system.NativeStart.run(Native Method)

点击展开代码

2、解决方法:
一种方法是将google play apk从/data/app移到/system/app,这样就是系统应用了,不过现实很多用户不会这种操作且不能让用户这样操作,而应系统自己解决。系统解决方法为修改
frameworks/base/services/java/com/android/server/pm/PackageManagerService.java类的
private void grantPermissionsLPw(PackageParser.Package pkg, boolean replace)函数,
修改如下:

com.android.vending特殊处理

其中// trinea BEGIN和// trinea END为新增部分,表示将包名com.android.vending(google play包名)且签名正确的应用设置为允许,将在后面改变其签名为系统签名当作系统应用处理。

3、具体原因:
究其原因是因为第三方rom去掉google play后,用户从市场下载google play后安装并不会当作系统应用处理。
第一个异常原因是非系统应用无法拥有android.permission.ACCESS_DOWNLOAD_MANAGER权限,而在DownloadProvider的insert函数中会调用checkInsertPermissions检查数据库操作权限,代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

private void checkInsertPermissions(ContentValues values) {

if (getContext().checkCallingOrSelfPermission(Downloads.Impl.PERMISSION_ACCESS)

== PackageManager.PERMISSION_GRANTED) {

return;

}

getContext().enforceCallingOrSelfPermission(android.Manifest.permission.INTERNET,

"INTERNET permission is required to use the download manager");

// ensure the request fits within the bounds of a public API request

// first copy so we can remove values

values = new ContentValues(values);

// check columns whose values are restricted

enforceAllowedValues(values, Downloads.Impl.COLUMN_IS_PUBLIC_API, Boolean.TRUE);

……

}

里面会有一系列的权限认证,上面异常即因为google play的Downloads.Impl.COLUMN_IS_PUBLIC_API为空,不满足为true的条件。

把google play当作系统应用处理后拥有Downloads.Impl.PERMISSION_ACCESS权限,在最开始检查时即满足而退出。

第二个异常是因为google play安装程序时使用到了android.permission.INSTALL_PACKAGES权限进行静默安装,而只有系统应用具有该权限。

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
目录
相关文章
|
3月前
|
编解码 iOS开发 开发者
App上架Apple App Store和Google Play流程
App上架Apple App Store和Google Play流程
104 2
|
3月前
|
小程序 Serverless 开发工具
小程序开发问题之在小程序中安装并初始化小程序Serverless客户端SDK如何解决
小程序开发问题之在小程序中安装并初始化小程序Serverless客户端SDK如何解决
|
3月前
|
Android开发
解决Flutter上架Google Play提示Version code 1 has already been used. Try another version code.
解决Flutter上架Google Play提示Version code 1 has already been used. Try another version code.
66 3
|
3月前
|
开发工具 Android开发
上架Google Play报错:For new apps, Android App Bundles must be signed with an RSA key.
上架Google Play报错:For new apps, Android App Bundles must be signed with an RSA key.
117 1
|
3月前
|
运维 Serverless 数据处理
函数计算产品使用问题之Animatediff插件怎么安装
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
4月前
|
网络协议 Serverless Python
函数计算操作报错合集之安装ebsynth_utility插件时报错,该如何处理
在使用函数计算服务(如阿里云函数计算)时,用户可能会遇到多种错误场景。以下是一些常见的操作报错及其可能的原因和解决方法,包括但不限于:1. 函数部署失败、2. 函数执行超时、3. 资源不足错误、4. 权限与访问错误、5. 依赖问题、6. 网络配置错误、7. 触发器配置错误、8. 日志与监控问题。
119 1
|
4月前
|
Serverless 文件存储 对象存储
函数计算操作报错合集之如何处理安装了ControlNet但无法加载出预览图并报错
在使用函数计算服务(如阿里云函数计算)时,用户可能会遇到多种错误场景。以下是一些常见的操作报错及其可能的原因和解决方法,包括但不限于:1. 函数部署失败、2. 函数执行超时、3. 资源不足错误、4. 权限与访问错误、5. 依赖问题、6. 网络配置错误、7. 触发器配置错误、8. 日志与监控问题。
函数计算操作报错合集之如何处理安装了ControlNet但无法加载出预览图并报错
|
3月前
|
安全 Java Android开发
Android 14适配Google play截止时间临近,适配注意点和经验
本文介绍了Android 14带来的关键更新,包括性能优化、定制化体验、多语言支持、多媒体与图形增强等功能。此外,还强调了适配时的重要事项,如targetSdkVersion升级、前台服务类型声明、蓝牙权限变更等,以及安全性与用户体验方面的改进。开发者需按官方指南更新应用,以充分利用新特性并确保兼容性和安全性。
264 0
|
6月前
|
数据可视化 定位技术 Sentinel
如何用Google Earth Engine快速、大量下载遥感影像数据?
【2月更文挑战第9天】本文介绍在谷歌地球引擎(Google Earth Engine,GEE)中,批量下载指定时间范围、空间范围的遥感影像数据(包括Landsat、Sentinel等)的方法~
2474 1
如何用Google Earth Engine快速、大量下载遥感影像数据?
|
6月前
|
编解码 人工智能 算法
Google Earth Engine——促进森林温室气体报告的全球时间序列数据集
Google Earth Engine——促进森林温室气体报告的全球时间序列数据集
88 0

热门文章

最新文章