Loading src/com/android/packageinstaller/permission/service/PermissionSearchIndexablesProvider.java +29 −19 Original line number Diff line number Diff line Loading @@ -26,18 +26,18 @@ import static android.provider.SearchIndexablesContract.RawData.COLUMN_KEYWORDS; import static android.provider.SearchIndexablesContract.RawData.COLUMN_RANK; import static android.provider.SearchIndexablesContract.RawData.COLUMN_TITLE; import static com.android.packageinstaller.permission.model.PermissionGroups.getAllPermissionGroups; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.database.Cursor; import android.database.MatrixCursor; import android.provider.SearchIndexablesProvider; import android.util.Log; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import com.android.packageinstaller.permission.model.PermissionGroup; import com.android.packageinstaller.permission.utils.Utils; import com.android.permissioncontroller.R; import java.io.FileInputStream; Loading @@ -48,7 +48,8 @@ import java.util.List; import java.util.UUID; public class PermissionSearchIndexablesProvider extends SearchIndexablesProvider { private static final String OS_PKG = "android"; private static final String LOG_TAG = PermissionSearchIndexablesProvider.class.getSimpleName(); private static final String EXTRA_SETTINGS_SEARCH_KEY = ":settings:fragment_args_key"; public static final String ACTION_MANAGE_PERMISSION_APPS = Loading @@ -73,25 +74,25 @@ public class PermissionSearchIndexablesProvider extends SearchIndexablesProvider public Cursor queryRawData(String[] projection) { String password = getPassword(getContext()); List<PermissionGroup> permissionGroups = getAllPermissionGroups(getContext(), null, false); PackageManager pm = getContext().getPackageManager(); List<String> permissionGroupNames = Utils.getPlatformPermissionGroups(); MatrixCursor cursor = new MatrixCursor(INDEXABLES_RAW_COLUMNS); int numPermissionGroups = permissionGroups.size(); int numPermissionGroups = permissionGroupNames.size(); for (int i = 0; i < numPermissionGroups; i++) { PermissionGroup group = permissionGroups.get(i); String groupName = permissionGroupNames.get(i); if (OS_PKG.equals(group.getDeclaringPackage())) { CharSequence label = group.getLabel(); CharSequence label = getPermissionGroupLabel(groupName, pm); cursor.newRow().add(COLUMN_RANK, 0) .add(COLUMN_TITLE, label) .add(COLUMN_KEYWORDS, label + ", " + getContext().getString(R.string.permission_search_keyword)) .add(COLUMN_KEY, password + getContext().getPackageName() + "," + group.getName()) + "," + groupName) .add(COLUMN_INTENT_ACTION, ACTION_MANAGE_PERMISSION_APPS); } } cursor.newRow().add(COLUMN_RANK, 0) .add(COLUMN_TITLE, getContext().getString(R.string.permission_usage_title)) Loading @@ -103,6 +104,15 @@ public class PermissionSearchIndexablesProvider extends SearchIndexablesProvider return cursor; } private CharSequence getPermissionGroupLabel(String groupName, PackageManager pm) { try { return pm.getPermissionGroupInfo(groupName, 0).loadLabel(pm); } catch (PackageManager.NameNotFoundException e) { Log.w(LOG_TAG, "Cannot find group label for " + groupName, e); } return null; } @Override public Cursor queryNonIndexableKeys(String[] projection) { return new MatrixCursor(NON_INDEXABLES_KEYS_COLUMNS); Loading src/com/android/packageinstaller/permission/utils/Utils.java +9 −0 Original line number Diff line number Diff line Loading @@ -395,6 +395,15 @@ public final class Utils { return PLATFORM_PERMISSION_GROUPS.containsKey(name); } /** * Get the names of the platform permission groups. * * @return the names of the platform permission groups. */ public static List<String> getPlatformPermissionGroups() { return new ArrayList<>(PLATFORM_PERMISSION_GROUPS.keySet()); } /** * Should UI show this permission. * Loading Loading
src/com/android/packageinstaller/permission/service/PermissionSearchIndexablesProvider.java +29 −19 Original line number Diff line number Diff line Loading @@ -26,18 +26,18 @@ import static android.provider.SearchIndexablesContract.RawData.COLUMN_KEYWORDS; import static android.provider.SearchIndexablesContract.RawData.COLUMN_RANK; import static android.provider.SearchIndexablesContract.RawData.COLUMN_TITLE; import static com.android.packageinstaller.permission.model.PermissionGroups.getAllPermissionGroups; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.database.Cursor; import android.database.MatrixCursor; import android.provider.SearchIndexablesProvider; import android.util.Log; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import com.android.packageinstaller.permission.model.PermissionGroup; import com.android.packageinstaller.permission.utils.Utils; import com.android.permissioncontroller.R; import java.io.FileInputStream; Loading @@ -48,7 +48,8 @@ import java.util.List; import java.util.UUID; public class PermissionSearchIndexablesProvider extends SearchIndexablesProvider { private static final String OS_PKG = "android"; private static final String LOG_TAG = PermissionSearchIndexablesProvider.class.getSimpleName(); private static final String EXTRA_SETTINGS_SEARCH_KEY = ":settings:fragment_args_key"; public static final String ACTION_MANAGE_PERMISSION_APPS = Loading @@ -73,25 +74,25 @@ public class PermissionSearchIndexablesProvider extends SearchIndexablesProvider public Cursor queryRawData(String[] projection) { String password = getPassword(getContext()); List<PermissionGroup> permissionGroups = getAllPermissionGroups(getContext(), null, false); PackageManager pm = getContext().getPackageManager(); List<String> permissionGroupNames = Utils.getPlatformPermissionGroups(); MatrixCursor cursor = new MatrixCursor(INDEXABLES_RAW_COLUMNS); int numPermissionGroups = permissionGroups.size(); int numPermissionGroups = permissionGroupNames.size(); for (int i = 0; i < numPermissionGroups; i++) { PermissionGroup group = permissionGroups.get(i); String groupName = permissionGroupNames.get(i); if (OS_PKG.equals(group.getDeclaringPackage())) { CharSequence label = group.getLabel(); CharSequence label = getPermissionGroupLabel(groupName, pm); cursor.newRow().add(COLUMN_RANK, 0) .add(COLUMN_TITLE, label) .add(COLUMN_KEYWORDS, label + ", " + getContext().getString(R.string.permission_search_keyword)) .add(COLUMN_KEY, password + getContext().getPackageName() + "," + group.getName()) + "," + groupName) .add(COLUMN_INTENT_ACTION, ACTION_MANAGE_PERMISSION_APPS); } } cursor.newRow().add(COLUMN_RANK, 0) .add(COLUMN_TITLE, getContext().getString(R.string.permission_usage_title)) Loading @@ -103,6 +104,15 @@ public class PermissionSearchIndexablesProvider extends SearchIndexablesProvider return cursor; } private CharSequence getPermissionGroupLabel(String groupName, PackageManager pm) { try { return pm.getPermissionGroupInfo(groupName, 0).loadLabel(pm); } catch (PackageManager.NameNotFoundException e) { Log.w(LOG_TAG, "Cannot find group label for " + groupName, e); } return null; } @Override public Cursor queryNonIndexableKeys(String[] projection) { return new MatrixCursor(NON_INDEXABLES_KEYS_COLUMNS); Loading
src/com/android/packageinstaller/permission/utils/Utils.java +9 −0 Original line number Diff line number Diff line Loading @@ -395,6 +395,15 @@ public final class Utils { return PLATFORM_PERMISSION_GROUPS.containsKey(name); } /** * Get the names of the platform permission groups. * * @return the names of the platform permission groups. */ public static List<String> getPlatformPermissionGroups() { return new ArrayList<>(PLATFORM_PERMISSION_GROUPS.keySet()); } /** * Should UI show this permission. * Loading