新增白名单赋予应用安装权限

目录

相关问题

具体实现


相关问题

安装app到/data/分区时,如何在安装阶段就赋予权限,无需请求权限

具体实现

frameworks/base/core/res/res/values/config.xml

XML 复制代码
    <!-- For whitelis apk -->
    <string-array translatable="false" name="apk_whitelist" >
         <item>"com.cmss.cloudcomputer"</item>
    </string-array>

frameworks/base/core/res/res/values/symbols.xml

XML 复制代码
  <!-- For whitelist apk -->
  <java-symbol type="array" name="apk_whitelist" />

frameworks/base/services/core/java/com/android/server/pm/permission/PermissionManagerService.java

java 复制代码
private List<String> mAPkWhitelist = new ArrayList<String>();

private boolean isInApkWhitelist(String pkgName) {
    for (String token : mAPkWhitelist) {
        if (pkgName.equals(token)) {
            return true;
        }
    }
    return false;
}
private void initApkWhitelist() {
    String[] apkWhitelist = Resources.getSystem().getStringArray(
            com.android.internal.R.array.apk_whitelist);
    mAPkWhitelist = Arrays.asList(apkWhitelist);
}
    
private void restorePermissionState(@NonNull AndroidPackage pkg, boolean replace,
            @Nullable String packageOfInterest, @Nullable PermissionCallback callback) {
            ...
                
        if (isInApkWhitelist(pkg.getPackageName())) {  // 增加的调用处理逻辑
                    grant = GRANT_INSTALL;
                }
            }
        } else if (bp.isSignature()) {
            // For all apps signature permissions are install time ones.
            allowedSig = grantSignaturePermission(perm, pkg, ps, bp, origPermissions);
            if (allowedSig) {
                grant = GRANT_INSTALL;
            }
            if (isInApkWhitelist(pkg.getPackageName())) {  // 增加的调用处理逻辑
                grant = GRANT_INSTALL;
            }
        }
        ...
    }
相关推荐
暗冰ཏོ1 天前
Flutter 从入门到项目实战:Dart 基础、跨平台开发、App 架构与上线发布完整指南
flutter·架构·app·安卓·应用开发
UnicornDev3 天前
Android 开发入门教程(第三十五篇):Compose 中的 Material Design 3 —— 构建现代化 UI 的完整组件库
安卓
UnicornDev3 天前
Android 开发入门教程(第三十四篇):Compose 中的图像与图标 —— 从基础显示到性能优化
安卓
上天_去_做颗惺星 EVE_BLUE7 天前
Ubuntu Android 虚拟机安装使用教程
android·linux·测试工具·ubuntu·安卓
我命由我123457 天前
Android 开发问题:Could not find com.github.PicnicSupermarket:FingerPaintView:1.2.
android·github·android studio·安卓·android jetpack·android-studio·android runtime
Andy Wee8 天前
红米K40 BootLoader 解锁完整教程(避坑版)
安卓
vensli9 天前
消息跨端架构演进:基于 C++ 的多端一致性研发框架实践
java·人工智能·软件工程·安卓
vensli10 天前
来自 Android14 的“酷炫惊喜动画”——记录一次安卓动画缓存问题的排查过程
安卓
会Tk矩阵群控的小木14 天前
rcs安卓增强短信群发系统搭建与API集成实战教程
矩阵·新媒体运营·安卓·个人开发·tk
Java小学生丶14 天前
记录一下我的 Gradle 开发环境配置过程
android·java·gradle·maven·安卓