summaryrefslogtreecommitdiffstats
path: root/src/com/android/packageinstaller/permission/ui/handheld/AppPermissionFragment.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/packageinstaller/permission/ui/handheld/AppPermissionFragment.java')
-rw-r--r--src/com/android/packageinstaller/permission/ui/handheld/AppPermissionFragment.java103
1 files changed, 102 insertions, 1 deletions
diff --git a/src/com/android/packageinstaller/permission/ui/handheld/AppPermissionFragment.java b/src/com/android/packageinstaller/permission/ui/handheld/AppPermissionFragment.java
index 548545b5..4cfab87e 100644
--- a/src/com/android/packageinstaller/permission/ui/handheld/AppPermissionFragment.java
+++ b/src/com/android/packageinstaller/permission/ui/handheld/AppPermissionFragment.java
@@ -23,6 +23,7 @@ import static com.android.packageinstaller.PermissionControllerStatsLog.APP_PERM
import static java.lang.annotation.RetentionPolicy.SOURCE;
+import android.Manifest;
import android.app.ActionBar;
import android.app.Activity;
import android.app.AlertDialog;
@@ -59,6 +60,7 @@ import androidx.fragment.app.Fragment;
import com.android.packageinstaller.PermissionControllerStatsLog;
import com.android.packageinstaller.permission.model.AppPermissionGroup;
import com.android.packageinstaller.permission.model.Permission;
+import com.android.packageinstaller.permission.model.PermissionUsages;
import com.android.packageinstaller.permission.ui.AppPermissionActivity;
import com.android.packageinstaller.permission.utils.LocationUtils;
import com.android.packageinstaller.permission.utils.PackageRemovalMonitor;
@@ -203,7 +205,19 @@ public class AppPermissionFragment extends SettingsWithLargeHeader {
((TextView) root.requireViewById(R.id.permission_message)).setText(
context.getString(R.string.app_permission_header, mGroup.getFullLabel()));
- root.requireViewById(R.id.usage_summary).setVisibility(View.GONE);
+ if (!Utils.isPermissionsHubEnabled()) {
+ root.requireViewById(R.id.usage_summary).setVisibility(View.GONE);
+ } else if (Utils.isModernPermissionGroup(mGroup.getName())) {
+ if (!Utils.shouldShowPermissionUsage(mGroup.getName())) {
+ ((TextView) root.requireViewById(R.id.usage_summary)).setText(
+ context.getString(R.string.app_permission_footer_not_available));
+ } else {
+ ((TextView) root.requireViewById(R.id.usage_summary)).setText(
+ getUsageSummary(context, appLabel));
+ }
+ } else {
+ root.requireViewById(R.id.usage_summary).setVisibility(View.GONE);
+ }
long sessionId = getArguments().getLong(EXTRA_SESSION_ID);
TextView footer1Link = root.requireViewById(R.id.footer_link_1);
@@ -247,6 +261,93 @@ public class AppPermissionFragment extends SettingsWithLargeHeader {
return root;
}
+ private @NonNull String getUsageSummary(@NonNull Context context, @NonNull String appLabel) {
+ String timeDiffStr = Utils.getRelativeLastUsageString(context,
+ PermissionUsages.loadLastGroupUsage(context, mGroup));
+ int strResId;
+ if (timeDiffStr == null) {
+ switch (mGroup.getName()) {
+ case Manifest.permission_group.ACTIVITY_RECOGNITION:
+ strResId = R.string.app_permission_footer_no_usages_activity_recognition;
+ break;
+ case Manifest.permission_group.CALENDAR:
+ strResId = R.string.app_permission_footer_no_usages_calendar;
+ break;
+ case Manifest.permission_group.CALL_LOG:
+ strResId = R.string.app_permission_footer_no_usages_call_log;
+ break;
+ case Manifest.permission_group.CAMERA:
+ strResId = R.string.app_permission_footer_no_usages_camera;
+ break;
+ case Manifest.permission_group.CONTACTS:
+ strResId = R.string.app_permission_footer_no_usages_contacts;
+ break;
+ case Manifest.permission_group.LOCATION:
+ strResId = R.string.app_permission_footer_no_usages_location;
+ break;
+ case Manifest.permission_group.MICROPHONE:
+ strResId = R.string.app_permission_footer_no_usages_microphone;
+ break;
+ case Manifest.permission_group.PHONE:
+ strResId = R.string.app_permission_footer_no_usages_phone;
+ break;
+ case Manifest.permission_group.SENSORS:
+ strResId = R.string.app_permission_footer_no_usages_sensors;
+ break;
+ case Manifest.permission_group.SMS:
+ strResId = R.string.app_permission_footer_no_usages_sms;
+ break;
+ case Manifest.permission_group.STORAGE:
+ strResId = R.string.app_permission_footer_no_usages_storage;
+ break;
+ default:
+ return context.getString(R.string.app_permission_footer_no_usages_generic,
+ appLabel, mGroup.getLabel().toString().toLowerCase());
+ }
+ return context.getString(strResId, appLabel);
+ } else {
+ switch (mGroup.getName()) {
+ case Manifest.permission_group.ACTIVITY_RECOGNITION:
+ strResId = R.string.app_permission_footer_usage_summary_activity_recognition;
+ break;
+ case Manifest.permission_group.CALENDAR:
+ strResId = R.string.app_permission_footer_usage_summary_calendar;
+ break;
+ case Manifest.permission_group.CALL_LOG:
+ strResId = R.string.app_permission_footer_usage_summary_call_log;
+ break;
+ case Manifest.permission_group.CAMERA:
+ strResId = R.string.app_permission_footer_usage_summary_camera;
+ break;
+ case Manifest.permission_group.CONTACTS:
+ strResId = R.string.app_permission_footer_usage_summary_contacts;
+ break;
+ case Manifest.permission_group.LOCATION:
+ strResId = R.string.app_permission_footer_usage_summary_location;
+ break;
+ case Manifest.permission_group.MICROPHONE:
+ strResId = R.string.app_permission_footer_usage_summary_microphone;
+ break;
+ case Manifest.permission_group.PHONE:
+ strResId = R.string.app_permission_footer_usage_summary_phone;
+ break;
+ case Manifest.permission_group.SENSORS:
+ strResId = R.string.app_permission_footer_usage_summary_sensors;
+ break;
+ case Manifest.permission_group.SMS:
+ strResId = R.string.app_permission_footer_usage_summary_sms;
+ break;
+ case Manifest.permission_group.STORAGE:
+ strResId = R.string.app_permission_footer_usage_summary_storage;
+ break;
+ default:
+ return context.getString(R.string.app_permission_footer_usage_summary_generic,
+ appLabel, mGroup.getLabel().toString().toLowerCase(), timeDiffStr);
+ }
+ return context.getString(strResId, appLabel, timeDiffStr);
+ }
+ }
+
@Override
public void onStart() {
super.onStart();