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;
}