summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Ivan Chiang <chiangi@google.com> 2021-03-25 11:25:00 +0800
committer Ivan Chiang <chiangi@google.com> 2021-03-25 13:16:27 +0800
commit53f02921f00f2d817093709dfb24556fafce3449 (patch)
tree49d050626dcb41a951d0483c6d5a8d23b06d67d3
parentd52daa1629bfebcc059ee7404103f1d578aea203 (diff)
Delay for showing progress dialog in permissionActivity
Test: manual, record videos. Bug: 183589702 Change-Id: I3aa42d4cc6a515efd11865484cb4a59b93199a35
-rw-r--r--src/com/android/providers/media/PermissionActivity.java39
-rw-r--r--tools/dialogs/AndroidManifest.xml1
2 files changed, 32 insertions, 8 deletions
diff --git a/src/com/android/providers/media/PermissionActivity.java b/src/com/android/providers/media/PermissionActivity.java
index 5daa70bdf..ee374481b 100644
--- a/src/com/android/providers/media/PermissionActivity.java
+++ b/src/com/android/providers/media/PermissionActivity.java
@@ -110,8 +110,15 @@ public class PermissionActivity extends Activity {
private AsyncTask<Void, Void, Void> positiveActionTask;
private Dialog progressDialog;
private TextView titleView;
+ private Handler mHandler;
+ private Runnable mShowProgressDialogRunnable = () -> {
+ // We will show the progress dialog, add the dim effect back.
+ getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
+ progressDialog.show();
+ };
private static final Long LEAST_SHOW_PROGRESS_TIME_MS = 300L;
+ private static final Long BEFORE_SHOW_PROGRESS_TIME_MS = 300L;
@VisibleForTesting
static final String VERB_WRITE = "write";
@@ -146,6 +153,12 @@ public class PermissionActivity extends Activity {
getWindow().addSystemFlags(
WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS);
setFinishOnTouchOutside(false);
+ // remove the dim effect
+ // We may not show the progress dialog, if we don't remove the dim effect,
+ // it may have flicker.
+ getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
+ getWindow().setDimAmount(0.0f);
+
// All untrusted input values here were validated when generating the
// original PendingIntent
@@ -164,6 +177,7 @@ public class PermissionActivity extends Activity {
return;
}
+ mHandler = new Handler(getMainLooper());
// Create Progress dialog
createProgressDialog();
@@ -226,6 +240,7 @@ public class PermissionActivity extends Activity {
@Override
public void onDestroy() {
super.onDestroy();
+ mHandler.removeCallbacks(mShowProgressDialogRunnable);
// Cancel and interrupt the AsyncTask of the positive action. This avoids
// calling the old activity during "onPostExecute", but the AsyncTask could
// still finish its background task. For now we are ok with:
@@ -251,8 +266,10 @@ public class PermissionActivity extends Activity {
((AlertDialog) dialog).getButton(AlertDialog.BUTTON_NEGATIVE).setEnabled(false);
}
- progressDialog.show();
final long startTime = System.currentTimeMillis();
+
+ mHandler.postDelayed(mShowProgressDialogRunnable, BEFORE_SHOW_PROGRESS_TIME_MS);
+
positiveActionTask = new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
@@ -303,17 +320,23 @@ public class PermissionActivity extends Activity {
@Override
protected void onPostExecute(Void result) {
setResult(Activity.RESULT_OK);
- // Don't dismiss the progress dialog too quick, it will cause bad UX.
- final long duration = System.currentTimeMillis() - startTime;
- if (duration > LEAST_SHOW_PROGRESS_TIME_MS) {
- progressDialog.dismiss();
+ mHandler.removeCallbacks(mShowProgressDialogRunnable);
+
+ if (!progressDialog.isShowing()) {
finish();
} else {
- Handler handler = new Handler(getMainLooper());
- handler.postDelayed(() -> {
+ // Don't dismiss the progress dialog too quick, it will cause bad UX.
+ final long duration =
+ System.currentTimeMillis() - startTime - BEFORE_SHOW_PROGRESS_TIME_MS;
+ if (duration > LEAST_SHOW_PROGRESS_TIME_MS) {
progressDialog.dismiss();
finish();
- }, LEAST_SHOW_PROGRESS_TIME_MS - duration);
+ } else {
+ mHandler.postDelayed(() -> {
+ progressDialog.dismiss();
+ finish();
+ }, LEAST_SHOW_PROGRESS_TIME_MS - duration);
+ }
}
}
}.execute();
diff --git a/tools/dialogs/AndroidManifest.xml b/tools/dialogs/AndroidManifest.xml
index 8ee5f2c93..960cb13b1 100644
--- a/tools/dialogs/AndroidManifest.xml
+++ b/tools/dialogs/AndroidManifest.xml
@@ -5,6 +5,7 @@
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
+ <uses-permission android:name="android.permission.MANAGE_MEDIA"/>
<application android:label="DialogsTool">
<activity android:name=".DialogsActivity"