Android 9.0 应用权限屏蔽位置信息

Android 9.0 应用权限屏蔽位置信息

近来接到项目需求反馈,想要屏蔽掉设置--应用和通知中所有与位置相关的权限,屏蔽掉设置--应用和通知中所有与位置相关权限主要需要屏蔽两个地方,一处是设置--应用和通知--应用权限中的位置信息,另一处是设置--应用和通知--查看全部应用--权限--位置信息,具体修改参照如下:

首先,在屏蔽设置--应用和通知--应用权限中的位置信息之前,我们需要先屏蔽掉设置--应用和通知--应用权限--位置信息--位置信息权限页面的有关位置的详细权限,具体修改参照如下:

/vendor/mediatek/proprietary/packages/apps/PackageInstaller/src/com/android/packageinstaller/permission/ui/ManagePermissionsActivity.java

复制代码
            case Intent.ACTION_MANAGE_PERMISSION_APPS: {
                String permissionName = getIntent().getStringExtra(Intent.EXTRA_PERMISSION_NAME);
+                if (permissionName.equals("android.permission-group.LOCATION"))return;
                if (permissionName == null) {
                    Log.i(LOG_TAG, "Missing mandatory argument EXTRA_PERMISSION_NAME");
                    finish();
                    return;
                }
                if (DeviceUtils.isTelevision(this)) {
                    fragment = com.android.packageinstaller.permission.ui.television
                            .PermissionAppsFragment.newInstance(permissionName);
                } else {
                    fragment = com.android.packageinstaller.permission.ui.handheld
                            .PermissionAppsFragment.newInstance(permissionName);
                }
            } break;

其次,我们屏蔽掉设置--应用和通知--应用权限中的位置信息,具体修改参照如下:

/vendor/mediatek/proprietary/packages/apps/PackageInstaller/src/com/android/packageinstaller/permission/ui/handheld/ManagePermissionsFragment.java

复制代码
        PmCache cache = new PmCache(getContext().getPackageManager());
        for (PermissionGroup group : groups) {
+	    if (group.getName().equals("android.permission-group.LOCATION")) continue;
            // / M: CTA requirement - permission control @{
            CtaManager manager = CtaManagerFactory.getInstance().makeCtaManager();
            boolean isSystemPermission =
                    manager.isPlatformPermissionGroup(
                    group.getDeclaringPackage(), group.getName());

之后,我们需要屏蔽掉设置--应用和通知--应用权限summary中的位置信息,具体修改参照如下:

/vendor/mediatek/proprietary/packages/apps/MtkSettings/src/com/android/settings/applications/AppPermissionsPreferenceController.java

复制代码
public class AppPermissionsPreferenceController extends BasePreferenceController {

    private static final String TAG = "AppPermissionPrefCtrl";
    private static final String KEY_APP_PERMISSION_GROUPS = "manage_perms";
    private static final String[] PERMISSION_GROUPS = new String[] {
-            "android.permission-group.LOCATION",
            "android.permission-group.MICROPHONE",
            "android.permission-group.CAMERA",
            "android.permission-group.SMS",
            "android.permission-group.CONTACTS",
            "android.permission-group.PHONE"};

接着,我们屏蔽设置--应用和通知--查看全部应用--权限--位置信息,在屏蔽设置--应用和通知--查看全部应用--权限--位置信息之前,同样我们也先要屏蔽掉设置--应用和通知--查看全部应用--权限--位置信息--位置信息页面的有关位置的详细权限,另外设置--应用和通知--查看全部应用--权限--设置所有权限--位置信息以及长按应用--应用信息--权限--位置信息--位置信息,这三个地方引用之处相同,具体修改参照如下:

/vendor/mediatek/proprietary/packages/apps/PackageInstaller/src/com/android/packageinstaller/permission/ui/handheld/AllAppPermissionsFragment.java

复制代码
            if (info.requestedPermissions != null) {
                for (int i = 0; i < info.requestedPermissions.length; i++) {
                    PermissionInfo perm;
                    try {
+			if (info.requestedPermissions[i].equals("android.permission.ACCESS_COARSE_LOCATION")
+			 || info.requestedPermissions[i].equals("android.permission.ACCESS_FINE_LOCATION")) {
+			    continue;
+			}

最后,我们屏蔽设置--应用和通知--查看全部应用--权限--位置信息,与上面同理,具体修改参照如下:

/vendor/mediatek/proprietary/packages/apps/PackageInstaller/src/com/android/packageinstaller/permission/ui/handheld/AppPermissionsFragment.java

复制代码
        for (AppPermissionGroup group : mAppPermissions.getPermissionGroups()) {
+	    if (group.getName().equals("android.permission-group.LOCATION")) continue;
            if (!Utils.shouldShowPermission(group, mAppPermissions.getPackageInfo().packageName)) {
                continue;
            }
相关推荐
hunterandroid10 小时前
Android 线上卡顿治理:从布局层级到主线程负载的全链路排查
android
恋猫de小郭10 小时前
Dart Skills CLI 1.0 :AI 时代的 Dart 交付支持
android·前端·flutter
2501_9160074710 小时前
使用Apple Dashboards显示和自定iOS应用性能指标与数据可视化指南
android·ios·小程序·https·uni-app·iphone·webview
蜡台11 小时前
# 已解决|MySQL 8\.4\.11 密码正确仍报错1045 \(28000\) Access denied 终极修复方案
android·mysql·adb
JMchen12311 小时前
2026年六款主流AI编程工具深度实测:Cursor、Copilot、Claude Code等对比与选型思考
android·kotlin·copilot·ai编程·开发工具·cursor·claude code
mmsx12 小时前
osmdroid 地图实战 05|让地图动起来:三个实时能力 + 六条工程排雷清单
android
码农coding12 小时前
android12 SystemUI组件之StatusBar启动
android
hai_android12 小时前
Kotlin 协程上下文:从 plus 到 CombinedContext,彻底搞懂左偏结构
android·kotlin
淡淡的香烟12 小时前
AndroidKMP之网络请求
android·网络
basketball61612 小时前
AI Infra 推理部署技术总结:2. vLLM 内核——PagedAttention 与调度器原理
android·人工智能·vllm·ai infra