Loading res/values/strings.xml +20 −2 Original line number Diff line number Diff line Loading @@ -256,10 +256,28 @@ <string name="permission_usage_title">Permissions usage</string> <!-- Summary for showing a single permission access and the number of accesses [CHAR LIMIT=80] --> <string name="permission_usage_summary">Last access: <xliff:g id="time" example="12:10 PM">%1$s</xliff:g>\n<xliff:g id="num" example="42">%2$s</xliff:g> accesses</string> <plurals name="permission_usage_summary"> <item quantity="one">Last access: <xliff:g id="time" example="12:10 PM">%1$s</xliff:g>\n<xliff:g id="num" example="42">%2$s</xliff:g> access</item> <item quantity="other">Last access: <xliff:g id="time" example="12:10 PM">%1$s</xliff:g>\n<xliff:g id="num" example="42">%2$s</xliff:g> accesses</item> </plurals> <!-- Summary for showing a single permission access and the number of accesses, including those in the background [CHAR LIMIT=80] --> <string name="permission_usage_summary_background">Last access: <xliff:g id="time" example="12:10 PM">%1$s</xliff:g>\n<xliff:g id="num" example="42">%2$s</xliff:g> accesses (<xliff:g id="num" example="7">%3$s</xliff:g> in background)</string> <plurals name="permission_usage_summary_background"> <item quantity="one">Last access: <xliff:g id="time" example="12:10 PM">%1$s</xliff:g>\n<xliff:g id="num" example="42">%2$s</xliff:g> access (<xliff:g id="num" example="7">%3$s</xliff:g> in background)</item> <item quantity="other">Last access: <xliff:g id="time" example="12:10 PM">%1$s</xliff:g>\n<xliff:g id="num" example="42">%2$s</xliff:g> accesses (<xliff:g id="num" example="7">%3$s</xliff:g> in background)</item> </plurals> <!-- Summary for showing a single permission access and the number of accesses [CHAR LIMIT=120] --> <plurals name="permission_usage_summary_duration"> <item quantity="one">Last access: <xliff:g id="time" example="12:10 PM">%1$s</xliff:g>\n<xliff:g id="num" example="42">%2$s</xliff:g> access\nDuration: <xliff:g id="time" example="2 hours">%3$s</xliff:g></item> <item quantity="other">Last access: <xliff:g id="time" example="12:10 PM">%1$s</xliff:g>\n<xliff:g id="num" example="42">%2$s</xliff:g> accesses\nDuration: <xliff:g id="time" example="2 hours">%3$s</xliff:g></item> </plurals> <!-- Summary for showing a single permission access and the number of accesses, including those in the background [CHAR LIMIT=120] --> <plurals name="permission_usage_summary_background_duration"> <item quantity="one">Last access: <xliff:g id="time" example="12:10 PM">%1$s</xliff:g>\n<xliff:g id="num" example="42">%2$s</xliff:g> access (<xliff:g id="num" example="7">%3$s</xliff:g> in background)\nDuration: <xliff:g id="time" example="2 hours">%3$s</xliff:g></item> <item quantity="other">Last access: <xliff:g id="time" example="12:10 PM">%1$s</xliff:g>\n<xliff:g id="num" example="42">%2$s</xliff:g> accesses (<xliff:g id="num" example="7">%3$s</xliff:g> in background)\nDuration: <xliff:g id="time" example="2 hours">%3$s</xliff:g></item> </plurals> <!-- Description for showing permission accesses with any permission [CHAR LIMIT=30] --> <string name="permission_usage_any_permission">Any permission</string> Loading src/com/android/packageinstaller/permission/ui/handheld/PermissionControlPreference.java +33 −6 Original line number Diff line number Diff line Loading @@ -16,6 +16,9 @@ package com.android.packageinstaller.permission.ui.handheld; import static android.Manifest.permission_group.CAMERA; import static android.Manifest.permission_group.MICROPHONE; import android.content.Context; import android.content.Intent; import android.graphics.drawable.Drawable; Loading @@ -34,6 +37,7 @@ import androidx.preference.PreferenceViewHolder; import com.android.packageinstaller.permission.model.AppPermissionGroup; import com.android.packageinstaller.permission.model.AppPermissionUsage.GroupUsage; import com.android.packageinstaller.permission.ui.AppPermissionActivity; import com.android.packageinstaller.permission.utils.Utils; import com.android.permissioncontroller.R; import java.util.List; Loading Loading @@ -121,13 +125,36 @@ public class PermissionControlPreference extends Preference { * @param accessTimeStr the string representing the last access time */ public void setUsageSummary(@NonNull GroupUsage groupUsage, @NonNull String accessTimeStr) { if (groupUsage.getBackgroundAccessCount() == 0) { setSummary(mContext.getString(R.string.permission_usage_summary, accessTimeStr, groupUsage.getForegroundAccessCount())); long backgroundAccessCount = groupUsage.getBackgroundAccessCount(); long duration = 0; String groupName = groupUsage.getGroup().getName(); if (groupName.equals(CAMERA) || groupName.equals(MICROPHONE)) { duration = groupUsage.getAccessDuration(); } if (backgroundAccessCount == 0) { long numForegroundAccesses = groupUsage.getForegroundAccessCount(); if (duration == 0) { setSummary(mContext.getResources().getQuantityString( R.plurals.permission_usage_summary, (int) numForegroundAccesses, accessTimeStr, numForegroundAccesses)); } else { setSummary(mContext.getResources().getQuantityString( R.plurals.permission_usage_summary_duration, (int) numForegroundAccesses, accessTimeStr, numForegroundAccesses, Utils.getUsageDurationString(mContext, groupUsage))); } } else { setSummary( mContext.getString(R.string.permission_usage_summary_background, accessTimeStr, groupUsage.getAccessCount(), groupUsage.getBackgroundAccessCount())); long numAccesses = groupUsage.getAccessCount(); if (duration == 0) { setSummary(mContext.getResources().getQuantityString( R.plurals.permission_usage_summary_background, (int) numAccesses, accessTimeStr, numAccesses, backgroundAccessCount)); } else { setSummary(mContext.getResources().getQuantityString( R.plurals.permission_usage_summary_background_duration, (int) numAccesses, accessTimeStr, numAccesses, backgroundAccessCount, Utils.getUsageDurationString(mContext, groupUsage))); } } } Loading src/com/android/packageinstaller/permission/utils/Utils.java +3 −4 Original line number Diff line number Diff line Loading @@ -573,16 +573,15 @@ public final class Utils { /** * Build a string representing the duration of a permission usage. * * @return a string representing the amount of time since this app's most recent permission * usage or null if there are no usages. * @return a string representing the duration of this app's usage or null if there are no * usages. */ public static @Nullable String getUsageDurationString(@NonNull Context context, @Nullable AppPermissionUsage.GroupUsage groupUsage) { if (groupUsage == null) { return null; } return getTimeDiffStr(context, System.currentTimeMillis() - groupUsage.getAccessDuration()); return getTimeDiffStr(context, groupUsage.getAccessDuration()); } /** Loading Loading
res/values/strings.xml +20 −2 Original line number Diff line number Diff line Loading @@ -256,10 +256,28 @@ <string name="permission_usage_title">Permissions usage</string> <!-- Summary for showing a single permission access and the number of accesses [CHAR LIMIT=80] --> <string name="permission_usage_summary">Last access: <xliff:g id="time" example="12:10 PM">%1$s</xliff:g>\n<xliff:g id="num" example="42">%2$s</xliff:g> accesses</string> <plurals name="permission_usage_summary"> <item quantity="one">Last access: <xliff:g id="time" example="12:10 PM">%1$s</xliff:g>\n<xliff:g id="num" example="42">%2$s</xliff:g> access</item> <item quantity="other">Last access: <xliff:g id="time" example="12:10 PM">%1$s</xliff:g>\n<xliff:g id="num" example="42">%2$s</xliff:g> accesses</item> </plurals> <!-- Summary for showing a single permission access and the number of accesses, including those in the background [CHAR LIMIT=80] --> <string name="permission_usage_summary_background">Last access: <xliff:g id="time" example="12:10 PM">%1$s</xliff:g>\n<xliff:g id="num" example="42">%2$s</xliff:g> accesses (<xliff:g id="num" example="7">%3$s</xliff:g> in background)</string> <plurals name="permission_usage_summary_background"> <item quantity="one">Last access: <xliff:g id="time" example="12:10 PM">%1$s</xliff:g>\n<xliff:g id="num" example="42">%2$s</xliff:g> access (<xliff:g id="num" example="7">%3$s</xliff:g> in background)</item> <item quantity="other">Last access: <xliff:g id="time" example="12:10 PM">%1$s</xliff:g>\n<xliff:g id="num" example="42">%2$s</xliff:g> accesses (<xliff:g id="num" example="7">%3$s</xliff:g> in background)</item> </plurals> <!-- Summary for showing a single permission access and the number of accesses [CHAR LIMIT=120] --> <plurals name="permission_usage_summary_duration"> <item quantity="one">Last access: <xliff:g id="time" example="12:10 PM">%1$s</xliff:g>\n<xliff:g id="num" example="42">%2$s</xliff:g> access\nDuration: <xliff:g id="time" example="2 hours">%3$s</xliff:g></item> <item quantity="other">Last access: <xliff:g id="time" example="12:10 PM">%1$s</xliff:g>\n<xliff:g id="num" example="42">%2$s</xliff:g> accesses\nDuration: <xliff:g id="time" example="2 hours">%3$s</xliff:g></item> </plurals> <!-- Summary for showing a single permission access and the number of accesses, including those in the background [CHAR LIMIT=120] --> <plurals name="permission_usage_summary_background_duration"> <item quantity="one">Last access: <xliff:g id="time" example="12:10 PM">%1$s</xliff:g>\n<xliff:g id="num" example="42">%2$s</xliff:g> access (<xliff:g id="num" example="7">%3$s</xliff:g> in background)\nDuration: <xliff:g id="time" example="2 hours">%3$s</xliff:g></item> <item quantity="other">Last access: <xliff:g id="time" example="12:10 PM">%1$s</xliff:g>\n<xliff:g id="num" example="42">%2$s</xliff:g> accesses (<xliff:g id="num" example="7">%3$s</xliff:g> in background)\nDuration: <xliff:g id="time" example="2 hours">%3$s</xliff:g></item> </plurals> <!-- Description for showing permission accesses with any permission [CHAR LIMIT=30] --> <string name="permission_usage_any_permission">Any permission</string> Loading
src/com/android/packageinstaller/permission/ui/handheld/PermissionControlPreference.java +33 −6 Original line number Diff line number Diff line Loading @@ -16,6 +16,9 @@ package com.android.packageinstaller.permission.ui.handheld; import static android.Manifest.permission_group.CAMERA; import static android.Manifest.permission_group.MICROPHONE; import android.content.Context; import android.content.Intent; import android.graphics.drawable.Drawable; Loading @@ -34,6 +37,7 @@ import androidx.preference.PreferenceViewHolder; import com.android.packageinstaller.permission.model.AppPermissionGroup; import com.android.packageinstaller.permission.model.AppPermissionUsage.GroupUsage; import com.android.packageinstaller.permission.ui.AppPermissionActivity; import com.android.packageinstaller.permission.utils.Utils; import com.android.permissioncontroller.R; import java.util.List; Loading Loading @@ -121,13 +125,36 @@ public class PermissionControlPreference extends Preference { * @param accessTimeStr the string representing the last access time */ public void setUsageSummary(@NonNull GroupUsage groupUsage, @NonNull String accessTimeStr) { if (groupUsage.getBackgroundAccessCount() == 0) { setSummary(mContext.getString(R.string.permission_usage_summary, accessTimeStr, groupUsage.getForegroundAccessCount())); long backgroundAccessCount = groupUsage.getBackgroundAccessCount(); long duration = 0; String groupName = groupUsage.getGroup().getName(); if (groupName.equals(CAMERA) || groupName.equals(MICROPHONE)) { duration = groupUsage.getAccessDuration(); } if (backgroundAccessCount == 0) { long numForegroundAccesses = groupUsage.getForegroundAccessCount(); if (duration == 0) { setSummary(mContext.getResources().getQuantityString( R.plurals.permission_usage_summary, (int) numForegroundAccesses, accessTimeStr, numForegroundAccesses)); } else { setSummary(mContext.getResources().getQuantityString( R.plurals.permission_usage_summary_duration, (int) numForegroundAccesses, accessTimeStr, numForegroundAccesses, Utils.getUsageDurationString(mContext, groupUsage))); } } else { setSummary( mContext.getString(R.string.permission_usage_summary_background, accessTimeStr, groupUsage.getAccessCount(), groupUsage.getBackgroundAccessCount())); long numAccesses = groupUsage.getAccessCount(); if (duration == 0) { setSummary(mContext.getResources().getQuantityString( R.plurals.permission_usage_summary_background, (int) numAccesses, accessTimeStr, numAccesses, backgroundAccessCount)); } else { setSummary(mContext.getResources().getQuantityString( R.plurals.permission_usage_summary_background_duration, (int) numAccesses, accessTimeStr, numAccesses, backgroundAccessCount, Utils.getUsageDurationString(mContext, groupUsage))); } } } Loading
src/com/android/packageinstaller/permission/utils/Utils.java +3 −4 Original line number Diff line number Diff line Loading @@ -573,16 +573,15 @@ public final class Utils { /** * Build a string representing the duration of a permission usage. * * @return a string representing the amount of time since this app's most recent permission * usage or null if there are no usages. * @return a string representing the duration of this app's usage or null if there are no * usages. */ public static @Nullable String getUsageDurationString(@NonNull Context context, @Nullable AppPermissionUsage.GroupUsage groupUsage) { if (groupUsage == null) { return null; } return getTimeDiffStr(context, System.currentTimeMillis() - groupUsage.getAccessDuration()); return getTimeDiffStr(context, groupUsage.getAccessDuration()); } /** Loading