diff options
Diffstat (limited to 'src/com/android/packageinstaller/permission/ui/handheld/AppPermissionFragment.java')
-rw-r--r-- | src/com/android/packageinstaller/permission/ui/handheld/AppPermissionFragment.java | 103 |
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(); |