diff options
| author | android-build-team Robot <android-build-team-robot@google.com> | 2020-09-29 23:09:45 +0000 |
|---|---|---|
| committer | android-build-team Robot <android-build-team-robot@google.com> | 2020-09-29 23:09:45 +0000 |
| commit | 9a470c1bc10ebb1e3a4b36ee0acf23926aead34d (patch) | |
| tree | 3c1dc3a3c843d7f38dbfac418a59ce0049494a58 | |
| parent | 7bf7f58cea01df9f804b5e5b5f5bba7f38891977 (diff) | |
| parent | 76147a8001ab8189ceb194daf6aa1aff53e7f608 (diff) | |
| download | platform_packages_apps_PackageInstaller-android11-qpr1-d-release.tar.gz platform_packages_apps_PackageInstaller-android11-qpr1-d-release.tar.bz2 platform_packages_apps_PackageInstaller-android11-qpr1-d-release.zip | |
Snap for 6872792 from 76147a8001ab8189ceb194daf6aa1aff53e7f608 to rvc-qpr1-releaseandroid-11.0.0_r31android-11.0.0_r29android-11.0.0_r28android-11.0.0_r27android-11.0.0_r26android-11.0.0_r24android-11.0.0_r23android-11.0.0_r22android-11.0.0_r21android-11.0.0_r20android-11.0.0_r19android-11.0.0_r18android11-qpr1-s2-releaseandroid11-qpr1-s1-releaseandroid11-qpr1-releaseandroid11-qpr1-d-s1-releaseandroid11-qpr1-d-release
Change-Id: If6154df576c08ac48b9f1ff791c3fc27fd6c873e
| -rw-r--r-- | src/com/android/permissioncontroller/permission/ui/handheld/ReviewOngoingUsageFragment.java | 78 |
1 files changed, 62 insertions, 16 deletions
diff --git a/src/com/android/permissioncontroller/permission/ui/handheld/ReviewOngoingUsageFragment.java b/src/com/android/permissioncontroller/permission/ui/handheld/ReviewOngoingUsageFragment.java index 41f3f45ad..c7b726341 100644 --- a/src/com/android/permissioncontroller/permission/ui/handheld/ReviewOngoingUsageFragment.java +++ b/src/com/android/permissioncontroller/permission/ui/handheld/ReviewOngoingUsageFragment.java @@ -26,9 +26,12 @@ import static com.android.permissioncontroller.PermissionControllerStatsLog.PRIV import static com.android.permissioncontroller.permission.debug.UtilsKt.shouldShowPermissionsDashboard; import android.app.AlertDialog; +import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; +import android.content.IntentFilter; import android.location.LocationManager; +import android.media.AudioManager; import android.os.Bundle; import android.os.UserHandle; import android.text.Html; @@ -74,6 +77,7 @@ public class ReviewOngoingUsageFragment extends PreferenceFragmentCompat { static final String PHONE_CALL = "android:phone_call_microphone"; static final String VIDEO_CALL = "android:phone_call_camera"; + private AudioManager mAudioManager; private @NonNull PermissionUsages mPermissionUsages; private boolean mPermissionUsagesLoaded; private @Nullable AlertDialog mDialog; @@ -82,6 +86,13 @@ public class ReviewOngoingUsageFragment extends PreferenceFragmentCompat { private ArraySet<String> mSystemUsage = new ArraySet<>(0); private long mStartTime; + private BroadcastReceiver mReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + onPermissionUsagesLoaded(); + } + }; + /** * @return A new {@link ReviewOngoingUsageFragment} */ @@ -99,6 +110,9 @@ public class ReviewOngoingUsageFragment extends PreferenceFragmentCompat { long numMillis = getArguments().getLong(Intent.EXTRA_DURATION_MILLIS); + mAudioManager = getContext().getSystemService(AudioManager.class); + getContext().registerReceiver(mReceiver, + new IntentFilter(AudioManager.ACTION_MICROPHONE_MUTE_CHANGED)); mPermissionUsages = new PermissionUsages(getActivity()); mStartTime = Math.max(System.currentTimeMillis() - numMillis, Instant.EPOCH.toEpochMilli()); String[] permissions = new String[]{CAMERA, MICROPHONE}; @@ -188,14 +202,18 @@ public class ReviewOngoingUsageFragment extends PreferenceFragmentCompat { } private void showDialog(@NonNull List<Pair<AppPermissionUsage, List<GroupUsage>>> usages) { - AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()) - .setView(createDialogView(usages)) - .setPositiveButton(R.string.ongoing_usage_dialog_ok, (dialog, which) -> - PermissionControllerStatsLog.write(PRIVACY_INDICATORS_INTERACTED, - PRIVACY_INDICATORS_INTERACTED__TYPE__DIALOG_DISMISS)) - .setOnDismissListener((dialog) -> getActivity().finish()); - mDialog = builder.create(); - mDialog.show(); + if (mDialog == null || !mDialog.isShowing()) { + AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()) + .setView(createDialogView(usages)) + .setPositiveButton(R.string.ongoing_usage_dialog_ok, (dialog, which) -> + PermissionControllerStatsLog.write(PRIVACY_INDICATORS_INTERACTED, + PRIVACY_INDICATORS_INTERACTED__TYPE__DIALOG_DISMISS)) + .setOnDismissListener((dialog) -> getActivity().finish()); + mDialog = builder.create(); + mDialog.show(); + } else { + mDialog.setView(createDialogView(usages)); + } } /** @@ -251,6 +269,9 @@ public class ReviewOngoingUsageFragment extends PreferenceFragmentCompat { int numGroups = groups.size(); for (int groupNum = 0; groupNum < numGroups; groupNum++) { AppPermissionGroup group = groups.get(groupNum).getGroup(); + if (group.getName().equals(MICROPHONE) && mAudioManager.isMicrophoneMute()) { + continue; + } usedGroups.put(group.getName(), group.getLabel()); } } @@ -283,35 +304,42 @@ public class ReviewOngoingUsageFragment extends PreferenceFragmentCompat { } if (!mOpUsage.isEmpty()) { - if (mOpUsage.containsKey(VIDEO_CALL) && mOpUsage.containsKey( - PHONE_CALL)) { + boolean hasVideo = mOpUsage.containsKey(VIDEO_CALL); + boolean hasPhone = mOpUsage.containsKey(PHONE_CALL) + && !mAudioManager.isMicrophoneMute(); + if (hasVideo && hasPhone) { otherUseContent.setText( Html.fromHtml(getString(R.string.phone_call_uses_microphone_and_camera), 0)); - } else if (mOpUsage.containsKey(VIDEO_CALL)) { + } else if (hasVideo && mAudioManager.isMicrophoneMute()) { otherUseContent.setText( Html.fromHtml(getString(R.string.phone_call_uses_camera), 0)); - } else if (mOpUsage.containsKey(PHONE_CALL)) { + } else if (hasPhone) { otherUseContent.setText( Html.fromHtml(getString(R.string.phone_call_uses_microphone), 0)); } - if (mOpUsage.containsKey(VIDEO_CALL)) { + if (hasVideo) { usedGroups.put(CAMERA, KotlinUtils.INSTANCE.getPermGroupLabel(context, CAMERA)); + if (!mAudioManager.isMicrophoneMute()) { + usedGroups.put(MICROPHONE, + KotlinUtils.INSTANCE.getPermGroupLabel(context, MICROPHONE)); + } } - if (mOpUsage.containsKey(PHONE_CALL)) { + if (hasPhone) { usedGroups.put(MICROPHONE, KotlinUtils.INSTANCE.getPermGroupLabel(context, MICROPHONE)); } } if (!mSystemUsage.isEmpty()) { - if (mSystemUsage.contains(MICROPHONE) && mSystemUsage.contains(CAMERA)) { + if (mSystemUsage.contains(MICROPHONE) && mSystemUsage.contains(CAMERA) + && !mAudioManager.isMicrophoneMute()) { systemUseContent.setText(getString(R.string.system_uses_microphone_and_camera)); } else if (mSystemUsage.contains(CAMERA)) { systemUseContent.setText(getString(R.string.system_uses_camera)); - } else if (mSystemUsage.contains(MICROPHONE) ) { + } else if (mSystemUsage.contains(MICROPHONE) && !mAudioManager.isMicrophoneMute()) { systemUseContent.setText(getString(R.string.system_uses_microphone)); } @@ -326,6 +354,14 @@ public class ReviewOngoingUsageFragment extends PreferenceFragmentCompat { PermissionApp app = usage.first.getApp(); List<GroupUsage> groups = usage.second; + // Check if this uses only mic permission. If the mic is muted, do not show + if (groups.size() == 1) { + if (groups.get(0).getGroup().getName().equals(MICROPHONE) + && mAudioManager.isMicrophoneMute()) { + continue; + } + } + View itemView = inflater.inflate(R.layout.ongoing_usage_dialog_item, appsList, false); ((TextView) itemView.requireViewById(R.id.app_name)).setText(app.getLabel()); @@ -337,6 +373,9 @@ public class ReviewOngoingUsageFragment extends PreferenceFragmentCompat { int numGroups = usages.get(usageNum).second.size(); for (int groupNum = 0; groupNum < numGroups; groupNum++) { AppPermissionGroup group = groups.get(groupNum).getGroup(); + if (mAudioManager.isMicrophoneMute() && group.getName().equals(MICROPHONE)) { + continue; + } ViewGroup groupView = (ViewGroup) inflater.inflate(R.layout.image_view, null); ((ImageView) groupView.requireViewById(R.id.icon)).setImageDrawable( @@ -379,4 +418,11 @@ public class ReviewOngoingUsageFragment extends PreferenceFragmentCompat { public void onCreatePreferences(Bundle bundle, String s) { // empty } + + @Override + public void onDestroy() { + getContext().unregisterReceiver(mReceiver); + super.onDestroy(); + + } } |
