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

本文主要介绍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
异常信息如下:

 

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)函数,
修改如下:

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

 

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

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

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

 

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值