BUG描述:ZX上层修改软件,彻底屏蔽定位功能。
本文的修改前提条件是驱动层面已经关闭相应的定位信息功能,本文的主要目标是彻底屏蔽定位,即驱动层面关闭定位功能,上层修改有关位置信息的所有项。
修改文件:
//1.添加需要的字符串
packages/apps/Settings/res/values/strings.xml
packages/apps/Settings/res/values-zh-rCN/strings.xml
//2. app右上角全部权限项
packages/modules/Permission/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/AppPermissionGroupsFragment.java
//3.添加宏控
build/make/core/main.mk
//4.App相关的summary包含"位置信息"字样
packages/apps/Settings/src/com/android/settings/applications/appinfo/AppPermissionPreferenceController.java
//5.去除权限管理器中的位置信息项
packages/modules/Permission/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/ManagePermissionsFragment.java
packages/modules/Permission/PermissionController/src/com/android/permissioncontroller/permission/ui/ManagePermissionsActivity.java
//6.设置隐私信息中心权限项
packages/modules/Permission/PermissionController/src/com/android/permissioncontroller/permission/model/v31/AppPermissionUsage.java
具体的修改项以及详细讲解
Android 10之后进行了一系列的调整原本驱动关闭定位信息服务,相关项全部消失,统一调控,但是在Android13进行相应的修改时,发现隐私保护得到了加强,位置信息加入了权限部分保护用户的隐私,本文即应对该情况进行CTA检测的修改。
修改记录如下:
四个步骤:
1.去除设置中权限管理器中的位置信息项
2.去除summary
3.去除应用权限框中的location项和右上角全部权限项
4.设置中隐私信息中心权限项
1.去除设置中权限管理器中的位置信息项
//ManagePermissionsActivity.java
//ManagePermissionsFragment.java
packages/modules/Permission/PermissionController/src/com/android/permissioncontroller/permission/ui/ManagePermissionsActivity.java
packages/modules/Permission/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/ManagePermissionsFragment.java
--- a/sprd/packages/modules/Permission/PermissionController/src/com/android/permissioncontroller/permission/ui/ManagePermissionsActivity.java
+++ b/sprd/packages/modules/Permission/PermissionController/src/com/android/permissioncontroller/permission/ui/ManagePermissionsActivity.java
@@ -40,6 +40,8 @@ import android.os.UserHandle;
import android.permission.PermissionManager;
import android.util.Log;
import android.view.MenuItem;
+import android.content.Context;
+import android.os.SystemProperties;
import androidx.fragment.app.Fragment;
import androidx.navigation.NavGraph;
@@ -86,6 +88,12 @@ import com.android.permissioncontroller.cta.AppUsagesDetailsWrapperFragment;
public final class ManagePermissionsActivity extends SettingsActivity {
private static final String LOG_TAG = ManagePermissionsActivity.class.getSimpleName();
+ private Context mContext;
+
+ //wjj add
+ private static final boolean HX_YK691_BUG_70677 = SystemProperties.getBoolean("ro.hx_yk691_bug_70677", false);
+ //wjj end
+
/**
* Name of the extra parameter that indicates whether or not to show all app permissions
*/
@@ -353,10 +361,13 @@ public final class ManagePermissionsActivity extends SettingsActivity {
case Intent.ACTION_MANAGE_PERMISSION_APPS: {
permissionName = getIntent().getStringExtra(Intent.EXTRA_PERMISSION_NAME);
-
String permissionGroupName = getIntent().getStringExtra(
Intent.EXTRA_PERMISSION_GROUP_NAME);
-
+ //wjj add for miss location
+ if(HX_YK691_BUG_70677){
+ if (permissionGroupName.equals("android.permission-group.LOCATION"))return;
+ }
+ //wjj end
if (permissionGroupName == null) {
try {
PermissionInfo permInfo = getPackageManager().getPermissionInfo(
diff --git a/sprd/packages/modules/Permission/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/ManagePermissionsFragment.java b/sprd/packages/modules/Permission/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/ManagePermissionsFragment.java
old mode 100644 (file)
new mode 100755 (executable)
index 47f4a4c..cf79362
--- a/sprd/packages/modules/Permission/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/ManagePermissionsFragment.java
+++ b/sprd/packages/modules/Permission/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/ManagePermissionsFragment.java
@@ -19,6 +19,7 @@ import android.app.ActionBar;
import android.content.Context;
import android.os.Bundle;
import android.widget.ImageView;
+import android.os.SystemProperties;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
@@ -41,6 +42,9 @@ import java.util.Map;
abstract class ManagePermissionsFragment extends PermissionsFrameFragment
implements Preference.OnPreferenceClickListener {
private static final String LOG_TAG = "ManagePermissionsFragment";
+ //wjj add
+ private static final boolean HX_YK691_BUG_70677 = SystemProperties.getBoolean("ro.hx_yk691_bug_70677", false);
+ //wjj end
/**
* Map<permission names, PermGroupPackagesUiInfo>, representing the data about which
@@ -48,6 +52,7 @@ abstract class ManagePermissionsFragment extends PermissionsFrameFragment
*/
protected Map<String, PermGroupPackagesUiInfo> mPermissionGroups = new HashMap<>();
private Collator mCollator;
+ private Context mContext;
@Override
public void onCreate(Bundle icicle) {
@@ -70,7 +75,6 @@ abstract class ManagePermissionsFragment extends PermissionsFrameFragment
if (group == null) {
return false;
}
-
showPermissionApps(key);
return true;
@@ -114,8 +118,14 @@ abstract class ManagePermissionsFragment extends PermissionsFrameFragment
for (String groupName : mPermissionGroups.keySet()) {
PermGroupPackagesUiInfo group = mPermissionGroups.get(groupName);
-
Preference preference = findPreference(groupName);
+ //wjj add for miss
+ if(HX_YK691_BUG_70677){
+ if (groupName.equals("android.permission-group.LOCATION")){
+ continue;
+ }
+ }
+ //wjj end
if (preference == null) {
preference = new FixedSizeIconPreference(context);
2.去除summary
//AppPermissionPreferenceController.java
sprd/packages/apps/Settings/src/com/android/settings/applications/appinfo/AppPermissionPreferenceController.java
diff --git a/sprd/packages/apps/Settings/src/com/android/settings/applications/appinfo/AppPermissionPreferenceController.java b/sprd/packages/apps/Settings/src/com/android/settings/applications/appinfo/AppPermissionPreferenceController.java
old mode 100644 (file)
new mode 100755 (executable)
index ce2ff32..22d87c2
--- a/sprd/packages/apps/Settings/src/com/android/settings/applications/appinfo/AppPermissionPreferenceController.java
+++ b/sprd/packages/apps/Settings/src/com/android/settings/applications/appinfo/AppPermissionPreferenceController.java
@@ -24,6 +24,7 @@ import android.content.pm.PackageManager;
import android.content.res.Resources;
import android.icu.text.ListFormatter;
import android.util.Log;
+import android.os.SystemProperties;
import androidx.annotation.VisibleForTesting;
import androidx.preference.Preference;
@@ -47,7 +48,9 @@ public class AppPermissionPreferenceController extends AppInfoPreferenceControll
private static final String TAG = "PermissionPrefControl";
private static final String EXTRA_HIDE_INFO_BUTTON = "hideInfoButton";
private static final long INVALID_SESSION_ID = 0;
-
+ //wjj add
+ private static final boolean HX_YK691_BUG_70677 = SystemProperties.getBoolean("ro.hx_yk691_bug_70677", false);
+ //wjj end
private final PackageManager mPackageManager;
private String mPackageName;
@@ -67,6 +70,11 @@ public class AppPermissionPreferenceController extends AppInfoPreferenceControll
R.string.runtime_permissions_summary_no_permissions_requested);
mPreference.setEnabled(false);
} else {
+ //wjj add for miss location summary
+ if(HX_YK691_BUG_70677){
+ grantedGroupLabels.remove(res.getString(R.string.location_informaion));
+ }
+ //wjj end
final ArrayList<CharSequence> list = new ArrayList<>(grantedGroupLabels);
if (additionalGrantedPermissionCount > 0) {
// N additional permissions.
3.去除应用权限框中的location项和右上角全部权限项
//AppPermissionGroupsFragment.java
sprd/packages/modules/Permission/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/AppPermissionGroupsFragment.java
--- a/sprd/packages/modules/Permission/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/AppPermissionGroupsFragment.java
+++ b/sprd/packages/modules/Permission/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/AppPermissionGroupsFragment.java
@@ -45,6 +45,7 @@ import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.UserHandle;
+import android.os.SystemProperties;
import android.provider.Settings;
import android.util.Log;
import android.view.LayoutInflater;
@@ -119,7 +120,9 @@ public final class AppPermissionGroupsFragment extends SettingsWithLargeHeader i
private UserHandle mUser;
private PermissionUsages mPermissionUsages;
private List<AppPermissionUsage> mAppPermissionUsages = new ArrayList<>();
-
+ //wjj add
+ private static final boolean HX_YK691_BUG_70677 = SystemProperties.getBoolean("ro.hx_yk691_bug_70677", false);
+ //wjj end
private Collator mCollator;
/**
@@ -264,12 +267,14 @@ public final class AppPermissionGroupsFragment extends SettingsWithLargeHeader i
super.onCreateOptionsMenu(menu, inflater);
if (mIsSystemPermsScreen) {
// CTA Feature: If cta supported, the menu will always be shown. @{
- if (CtaUtils.CTA_FEATURE_SUPPORTED) {
- menu.add(Menu.NONE, MENU_ALL_PERMS, Menu.NONE,
- R.string.all_permissions).setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
- } else {
- menu.add(Menu.NONE, MENU_ALL_PERMS, Menu.NONE, R.string.all_permissions);
- }
+ //wjj add for miss all_perssion
+ //if (CtaUtils.CTA_FEATURE_SUPPORTED) {
+ // menu.add(Menu.NONE, MENU_ALL_PERMS, Menu.NONE,
+ // R.string.all_permissions).setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
+ //} else {
+ // menu.add(Menu.NONE, MENU_ALL_PERMS, Menu.NONE, R.string.all_permissions);
+ //}
+ //wjj end
// @}
if (!SdkLevel.isAtLeastS()) {
HelpUtils.prepareHelpMenuItem(getActivity(), menu, R.string.help_app_permissions,
@@ -354,6 +359,14 @@ public final class AppPermissionGroupsFragment extends SettingsWithLargeHeader i
for (GroupUiInfo groupInfo : groupMap.get(grantCategory)) {
String groupName = groupInfo.getGroupName();
+ //wjj add for miss Location
+ if(HX_YK691_BUG_70677){
+ Log.d("wjj+groupName"+LOG_TAG,"groupName :"+groupName);
+ if(groupName.equals("android.permission-group.LOCATION")){
+ continue;
+ }
+ }
+ //wjj end
/* CTA Feature */
if (CtaUtils.CTA_FEATURE_SUPPORTED && CtaUtils.isCtaGroups(groupName)
&& CtaUtils.isSystemApp(requireActivity().getPackageManager(), mPackageName)) {
4.设置中隐私信息中心权限项
//AppPermissionUsage.java
sprd/packages/modules/Permission/PermissionController/src/com/android/permissioncontroller/permission/model/v31/AppPermissionUsage.java
diff --git a/sprd/packages/modules/Permission/PermissionController/src/com/android/permissioncontroller/permission/model/v31/AppPermissionUsage.java b/sprd/packages/modules/Permission/PermissionController/src/com/android/permissioncontroller/permission/model/v31/AppPermissionUsage.java
old mode 100644 (file)
new mode 100755 (executable)
index 8309eab..4ae0bc9
--- a/sprd/packages/modules/Permission/PermissionController/src/com/android/permissioncontroller/permission/model/v31/AppPermissionUsage.java
+++ b/sprd/packages/modules/Permission/PermissionController/src/com/android/permissioncontroller/permission/model/v31/AppPermissionUsage.java
@@ -35,7 +35,9 @@ import android.content.pm.Attribution;
import android.content.res.Resources;
import android.media.AudioRecordingConfiguration;
import android.os.Build;
+import android.os.SystemProperties;
import android.util.Log;
+import android.content.Context;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
@@ -68,6 +70,10 @@ public final class AppPermissionUsage {
private final @NonNull List<GroupUsage> mGroupUsages = new ArrayList<>();
private final @NonNull PermissionApp mPermissionApp;
private static final String TAG ="AppPermissionUsage";
+ private Context mContext;
+ //wjj add
+ private static final boolean HX_YK691_BUG_70677 = SystemProperties.getBoolean("ro.hx_yk691_bug_70677", false);
+ //wjj end
private static final int PRIVACY_HUB_FLAGS = AppOpsManager.OP_FLAG_SELF
| AppOpsManager.OP_FLAG_TRUSTED_PROXIED | AppOpsManager.OP_FLAG_TRUSTED_PROXY;
@@ -80,6 +86,14 @@ public final class AppPermissionUsage {
final int groupCount = groups.size();
for (int i = 0; i < groupCount; i++) {
final AppPermissionGroup group = groups.get(i);
+ //wjj add for miss android.permission-group.LOCATION
+ if(HX_YK691_BUG_70677){
+ Log.d("wjj-1"+TAG,"group.getName() : "+group.getName());
+ if(group.getName().equals("android.permission-group.LOCATION")){
+ continue;
+ }
+ }
+ //wjj end
/**
* TODO: HACK HACK HACK.
@@ -543,9 +557,19 @@ public final class AppPermissionUsage {
for (int permissionNum = 0; permissionNum < permissionCount; permissionNum++) {
final Permission permission = permissions.get(permissionNum);
final String opName = permission.getAppOp();
- if (opName != null) {
- allOps.add(opName);
- }
+
+ //wjj add for miss location
+ if(HX_YK691_BUG_70677){
+ Log.d("wjj-2"+TAG,"opName : "+opName);
+ if (opName != null && opName != "android:fine_location" && opName != "android:coarse_location" && opName != "android:access_media_location") {
+ allOps.add(opName);
+ }
+ }else{
+ if (opName != null){
+ allOps.add(opName);
+ }
+ }
+ //wjj end
}
if (appPermissionGroup.getName().equals(Manifest.permission_group.MICROPHONE)) {