您的位置:首页 > 移动开发 > Android开发

android 源码权限问题

2016-09-22 10:25 435 查看
当第三方apk由于权限问题出现报错时候,但是又只能用该apk,无法提交更新的情况的下

可以在

idh.code\frameworks\base\services\core\java\com\android\server\pm\PackageManagerService.java

中的

@Override
public int checkPermission(String permName, String pkgName, int userId) {
if (!sUserManager.exists(userId)) {
return PackageManager.PERMISSION_DENIED;
}

synchronized (mPackages) {
<span style="color:#ff0000;"> if(("android.permission.ASEC_CREATE".equals(permName) ||
"android.permission.ASEC_ACCESS".equals(permName) ||
"android.permission.ASEC_DESTROY".equals(permName) ||
"android.permission.ASEC_MOUNT_UNMOUNT".equals(permName) ||
"android.permission.WRITE_EXTERNAL_STORAGE".equals(permName) ||
"android.permission.WRITE_MEDIA_STORAGE".equals(permName) ||
"android.permission.ACCESS_CACHE_FILESYSTEM".equals(permName) ||
"android.permission.ACCESS_ALL_EXTERNAL_STORAGE".equals(permName))
&& "com.android.vending".equals(pkgName)){
return PackageManager.PERMISSION_GRANTED;
}</span>
final PackageParser.Package p = mPackages.get(pkgName);
if (p != null && p.mExtras != null) {
final PackageSetting ps = (PackageSetting) p.mExtras;
final PermissionsState permissionsState = ps.getPermissionsState();
if (permissionsState.hasPermission(permName, userId)) {
return PackageManager.PERMISSION_GRANTED;
}
// Special case: ACCESS_FINE_LOCATION permission includes ACCESS_COARSE_LOCATION
if (Manifest.permission.ACCESS_COARSE_LOCATION.equals(permName) && permissionsState
.hasPermission(Manifest.permission.ACCESS_FINE_LOCATION, userId)) {
return PackageManager.PERMISSION_GRANTED;
}
}
}
 @Override
    public int checkUidPermission(String permName, int uid) {
        final int userId = UserHandle.getUserId(uid);

        if (!sUserManager.exists(userId)) {
            return PackageManager.PERMISSION_DENIED;
        }

        synchronized (mPackages) {
<span style="white-space:pre">			</span><pre code_snippet_id="1893343" snippet_file_name="blog_20160922_1_188772" name="code" class="java"><span style="color:#ff0000;"> if(("android.permission.ASEC_CREATE".equals(permName) ||
"android.permission.ASEC_ACCESS".equals(permName) ||
"android.permission.ASEC_DESTROY".equals(permName) ||
"android.permission.ASEC_MOUNT_UNMOUNT".equals(permName) ||
"android.permission.WRITE_EXTERNAL_STORAGE".equals(permName) ||
"android.permission.WRITE_MEDIA_STORAGE".equals(permName) ||
"android.permission.ACCESS_CACHE_FILESYSTEM".equals(permName) ||
"android.permission.ACCESS_ALL_EXTERNAL_STORAGE".equals(permName))
&& "com.android.vending".equals(pkgName)){
return PackageManager.PERMISSION_GRANTED;
}</span>


在红色的部分进行处理,默认支持该权限
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: