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;
            }
相关推荐
DogDaoDao6 小时前
Android 硬件编码器参数完全指南:MediaCodec 深度解析
android·音视频·视频编解码·h264·硬编码·视频直播·mediacodec
JohnnyDeng947 小时前
Android 自定义 View:Canvas 绘图与事件分发深度解析
android
Android小码家10 小时前
Framework之Launcher小窗开发
android·framework·虚拟屏·小窗
赏金术士11 小时前
第七章:状态管理实战与架构总结
android·ui·kotlin·compose
颂love12 小时前
MySQL的执行流程
android·数据库·mysql
云起SAAS16 小时前
抖音小游戏源码 - 消消乐 | 含激励广告+成就系统 | 开箱即用商业级消除游戏模板
android·游戏·广告联盟·看激励广告联盟流量主·抖音小游戏源码 - 消消乐
大貔貅喝啤酒18 小时前
基于Windows下载安装Android Studio 3.3.2版本教程(2026详细图文版)
android·java·windows·android studio
程序员码歌18 小时前
OpenSpec 到 Superpowers:AI 编码从说清到做对
android·前端·人工智能
2501_9151063218 小时前
深入解析无源码iOS加固原理与方案,保护应用安全
android·安全·ios·小程序·uni-app·cocoa·iphone
黄林晴21 小时前
重磅官宣:Android UI 开发正式进入 Compose-first 时代
android·google io