Android 13 彻底屏蔽定位

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)) {

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值