Merge "Fix tapping on more than one failure notification."
This commit is contained in:
committed by
Android (Google) Code Review
commit
12f11c55e6
@ -104,10 +104,12 @@ public class FilesActivity extends BaseActivity {
|
||||
// loading or restoring the stack.
|
||||
//
|
||||
// When restoring from a stack, if a URI is present, it should only ever
|
||||
// be a launch URI. Launch URIs support sensible activity management, but
|
||||
// don't specify a real content target.
|
||||
// be a launch URI, or a fake Uri from notifications.
|
||||
// Launch URIs support sensible activity management, but don't specify a real
|
||||
// content target.
|
||||
if (DEBUG) Log.d(TAG, "Launching with non-empty stack.");
|
||||
checkState(uri == null || LauncherActivity.isLaunchUri(uri));
|
||||
checkState(uri == null || uri.getAuthority() == null ||
|
||||
LauncherActivity.isLaunchUri(uri));
|
||||
refreshCurrentRootAndDirectory(ANIM_NONE);
|
||||
} else if (DocumentsContract.isRootUri(this, uri)) {
|
||||
if (DEBUG) Log.d(TAG, "Launching with root URI.");
|
||||
|
@ -354,7 +354,7 @@ public final class Metrics {
|
||||
* a single ROOT_OTHER bucket.
|
||||
*/
|
||||
private static @Root int sanitizeRoot(Uri uri) {
|
||||
if (uri == null || LauncherActivity.isLaunchUri(uri)) {
|
||||
if (uri == null || uri.getAuthority() == null || LauncherActivity.isLaunchUri(uri)) {
|
||||
return ROOT_NONE;
|
||||
}
|
||||
|
||||
|
@ -186,7 +186,7 @@ class CopyJob extends Job {
|
||||
|
||||
@Override
|
||||
Notification getWarningNotification() {
|
||||
final Intent navigateIntent = buildNavigateIntent();
|
||||
final Intent navigateIntent = buildNavigateIntent(INTENT_TAG_WARNING);
|
||||
navigateIntent.putExtra(EXTRA_DIALOG_TYPE, DIALOG_TYPE_CONVERTED);
|
||||
navigateIntent.putExtra(EXTRA_OPERATION, operationType);
|
||||
|
||||
|
@ -35,6 +35,7 @@ import android.content.ContentProviderClient;
|
||||
import android.content.ContentResolver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
import android.os.Parcelable;
|
||||
import android.os.RemoteException;
|
||||
import android.provider.DocumentsContract;
|
||||
@ -60,6 +61,12 @@ import java.util.Map;
|
||||
*/
|
||||
abstract public class Job implements Runnable {
|
||||
private static final String TAG = "Job";
|
||||
|
||||
static final String INTENT_TAG_WARNING = "warning";
|
||||
static final String INTENT_TAG_FAILURE = "failure";
|
||||
static final String INTENT_TAG_PROGRESS = "progress";
|
||||
static final String INTENT_TAG_CANCEL = "cancel";
|
||||
|
||||
final Context service;
|
||||
final Context appContext;
|
||||
final Listener listener;
|
||||
@ -130,6 +137,10 @@ abstract public class Job implements Runnable {
|
||||
|
||||
abstract Notification getWarningNotification();
|
||||
|
||||
Uri getDataUriForIntent(String tag) {
|
||||
return Uri.parse(String.format("data,%s-%s", tag, id));
|
||||
}
|
||||
|
||||
ContentProviderClient getClient(DocumentInfo doc) throws RemoteException {
|
||||
ContentProviderClient client = mClients.get(doc.authority);
|
||||
if (client == null) {
|
||||
@ -193,10 +204,9 @@ abstract public class Job implements Runnable {
|
||||
}
|
||||
|
||||
Notification getFailureNotification(@PluralsRes int titleId, @DrawableRes int icon) {
|
||||
final Intent navigateIntent = buildNavigateIntent();
|
||||
final Intent navigateIntent = buildNavigateIntent(INTENT_TAG_FAILURE);
|
||||
navigateIntent.putExtra(EXTRA_DIALOG_TYPE, OperationDialogFragment.DIALOG_TYPE_FAILURE);
|
||||
navigateIntent.putExtra(EXTRA_OPERATION, operationType);
|
||||
|
||||
navigateIntent.putParcelableArrayListExtra(EXTRA_SRC_LIST, failedFiles);
|
||||
|
||||
final Notification.Builder errorBuilder = new Notification.Builder(service)
|
||||
@ -219,7 +229,8 @@ abstract public class Job implements Runnable {
|
||||
Notification.Builder progressBuilder = new Notification.Builder(service)
|
||||
.setContentTitle(title)
|
||||
.setContentIntent(
|
||||
PendingIntent.getActivity(appContext, 0, buildNavigateIntent(), 0))
|
||||
PendingIntent.getActivity(appContext, 0,
|
||||
buildNavigateIntent(INTENT_TAG_PROGRESS), 0))
|
||||
.setCategory(Notification.CATEGORY_PROGRESS)
|
||||
.setSmallIcon(icon)
|
||||
.setOngoing(true);
|
||||
@ -241,15 +252,18 @@ abstract public class Job implements Runnable {
|
||||
/**
|
||||
* Creates an intent for navigating back to the destination directory.
|
||||
*/
|
||||
Intent buildNavigateIntent() {
|
||||
Intent buildNavigateIntent(String tag) {
|
||||
Intent intent = new Intent(service, FilesActivity.class);
|
||||
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
intent.setAction(DocumentsContract.ACTION_BROWSE);
|
||||
intent.setData(getDataUriForIntent(tag));
|
||||
intent.putExtra(Shared.EXTRA_STACK, (Parcelable) stack);
|
||||
return intent;
|
||||
}
|
||||
|
||||
Intent createCancelIntent() {
|
||||
final Intent cancelIntent = new Intent(service, FileOperationService.class);
|
||||
cancelIntent.setData(getDataUriForIntent(INTENT_TAG_CANCEL));
|
||||
cancelIntent.putExtra(EXTRA_CANCEL, true);
|
||||
cancelIntent.putExtra(EXTRA_JOB_ID, id);
|
||||
return cancelIntent;
|
||||
|
Reference in New Issue
Block a user