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;
            }
相关推荐
白帽攻防录17 分钟前
SRC 挖洞:Android 蓝牙预认证 RCE 深度复盘,CVE-2026-55330 怎么在蓝牙范围内零交互攻破手机
android·网络安全·智能手机·src漏洞挖掘
vilya29 分钟前
手机端 Agent 是怎么跑起来的:决策循环、四道护栏、两条红线
android·agent
2501_9159214330 分钟前
详细教程:使用Perfdog工具测量iOS应用的功耗性能与优化方法
android·macos·ios·小程序·uni-app·cocoa·iphone
hunterandroid1 小时前
android方案 : Multiplatform 跨平台开发实战:一套代码,多端运行
android·前端
事圆则缓2 小时前
什么是 Android Clean Architecture
android
字节跳动的猫2 小时前
LikeShop 搜索功能优化二开:中文分词、商品权重排序与搜索热词管理
android·java·中文分词
恋猫de小郭2 小时前
Flitz ,一个把 Flutter 玩成热插拔 Preview 的有趣项目,不错的思路
android·前端·flutter
千码君20163 小时前
个人开发者:安卓手机adb调试
android·adb·智能手机