Avoid senseless disambiguation #2/2
This makes having two contacts apps on the same
device tolerable.
Bug: 18777272
Change-Id: Ib75eadfb94eee2c5c8305747eddd01ba9a8b1dc4
diff --git a/src/com/android/contacts/NonPhoneActivity.java b/src/com/android/contacts/NonPhoneActivity.java
index 652620c..8ae96a2 100644
--- a/src/com/android/contacts/NonPhoneActivity.java
+++ b/src/com/android/contacts/NonPhoneActivity.java
@@ -16,6 +16,8 @@
package com.android.contacts;
+import com.android.contacts.common.util.ImplicitIntentsUtil;
+
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
@@ -85,7 +87,7 @@
final Intent intent = new Intent(Intent.ACTION_INSERT_OR_EDIT);
intent.setType(Contacts.CONTENT_ITEM_TYPE);
intent.putExtra(Insert.PHONE, getArgumentPhoneNumber());
- startActivity(intent);
+ ImplicitIntentsUtil.startActivityInApp(getActivity(), intent);
}
dismiss();
}
diff --git a/src/com/android/contacts/activities/ContactEditorBaseActivity.java b/src/com/android/contacts/activities/ContactEditorBaseActivity.java
index 7cf4298..e4e9049 100644
--- a/src/com/android/contacts/activities/ContactEditorBaseActivity.java
+++ b/src/com/android/contacts/activities/ContactEditorBaseActivity.java
@@ -22,6 +22,7 @@
import com.android.contacts.common.model.AccountTypeManager;
import com.android.contacts.common.model.account.AccountType;
import com.android.contacts.common.model.account.AccountWithDataSet;
+import com.android.contacts.common.util.ImplicitIntentsUtil;
import com.android.contacts.editor.ContactEditorBaseFragment;
import com.android.contacts.editor.ContactEditorFragment;
import com.android.contacts.interactions.ContactDeletionInteraction;
@@ -261,7 +262,8 @@
if (mFinishActivityOnSaveCompleted) {
setResult(resultIntent == null ? RESULT_CANCELED : RESULT_OK, resultIntent);
} else if (resultIntent != null) {
- startActivity(resultIntent);
+ ImplicitIntentsUtil.startActivityInApp(ContactEditorBaseActivity.this,
+ resultIntent);
}
finish();
}
@@ -289,7 +291,7 @@
intent.putParcelableArrayListExtra(ContactsContract.Intents.Insert.DATA, values);
}
- startActivity(intent);
+ ImplicitIntentsUtil.startActivityInApp(ContactEditorBaseActivity.this, intent);
finish();
}
diff --git a/src/com/android/contacts/activities/ContactSelectionActivity.java b/src/com/android/contacts/activities/ContactSelectionActivity.java
index 8477a95..0ba6e3a 100644
--- a/src/com/android/contacts/activities/ContactSelectionActivity.java
+++ b/src/com/android/contacts/activities/ContactSelectionActivity.java
@@ -45,6 +45,7 @@
import com.android.contacts.ContactsActivity;
import com.android.contacts.R;
import com.android.contacts.common.list.ContactEntryListFragment;
+import com.android.contacts.common.util.ImplicitIntentsUtil;
import com.android.contacts.list.ContactPickerFragment;
import com.android.contacts.list.ContactsIntentResolver;
import com.android.contacts.list.ContactsRequest;
@@ -118,14 +119,6 @@
return;
}
- Intent redirect = mRequest.getRedirectIntent();
- if (redirect != null) {
- // Need to start a different activity
- startActivity(redirect);
- finish();
- return;
- }
-
configureActivityTitle();
setContentView(R.layout.contact_picker);
@@ -650,7 +643,7 @@
if (requestCode == SUBACTIVITY_ADD_TO_EXISTING_CONTACT) {
if (resultCode == Activity.RESULT_OK) {
if (data != null) {
- startActivity(data);
+ ImplicitIntentsUtil.startActivityInAppIfPossible(this, data);
}
finish();
}
diff --git a/src/com/android/contacts/activities/GroupDetailActivity.java b/src/com/android/contacts/activities/GroupDetailActivity.java
index c24a42f..394e5e5 100644
--- a/src/com/android/contacts/activities/GroupDetailActivity.java
+++ b/src/com/android/contacts/activities/GroupDetailActivity.java
@@ -31,6 +31,7 @@
import com.android.contacts.ContactsActivity;
import com.android.contacts.R;
+import com.android.contacts.common.util.ImplicitIntentsUtil;
import com.android.contacts.group.GroupDetailDisplayUtils;
import com.android.contacts.group.GroupDetailFragment;
import com.android.contacts.common.model.AccountTypeManager;
@@ -106,7 +107,7 @@
@Override
public void onContactSelected(Uri contactUri) {
Intent intent = new Intent(Intent.ACTION_VIEW, contactUri);
- startActivity(intent);
+ ImplicitIntentsUtil.startActivityInApp(GroupDetailActivity.this, intent);
}
};
@@ -149,7 +150,7 @@
final Intent intent = new Intent(Intent.ACTION_VIEW, uri);
intent.setClassName(accountType.syncAdapterPackageName,
accountType.getViewGroupActivity());
- startActivity(intent);
+ ImplicitIntentsUtil.startActivityInApp(GroupDetailActivity.this, intent);
}
});
groupSourceMenuItem.setActionView(groupSourceView);
diff --git a/src/com/android/contacts/activities/PeopleActivity.java b/src/com/android/contacts/activities/PeopleActivity.java
index 09ef09f..33e92e9 100644
--- a/src/com/android/contacts/activities/PeopleActivity.java
+++ b/src/com/android/contacts/activities/PeopleActivity.java
@@ -31,7 +31,6 @@
import android.provider.ContactsContract;
import android.provider.ContactsContract.Contacts;
import android.provider.ContactsContract.ProviderStatus;
-import android.provider.ContactsContract.QuickContact;
import android.provider.Settings;
import android.support.v13.app.FragmentPagerAdapter;
import android.support.v4.view.PagerAdapter;
@@ -55,6 +54,7 @@
import com.android.contacts.activities.ActionBarAdapter.TabState;
import com.android.contacts.common.ContactsUtils;
import com.android.contacts.common.dialog.ClearFrequentsDialog;
+import com.android.contacts.common.util.ImplicitIntentsUtil;
import com.android.contacts.interactions.ContactDeletionInteraction;
import com.android.contacts.common.interactions.ImportExportDialogFragment;
import com.android.contacts.common.list.ContactEntryListFragment;
@@ -267,18 +267,10 @@
return false;
}
- Intent redirect = mRequest.getRedirectIntent();
- if (redirect != null) {
- // Need to start a different activity
- startActivity(redirect);
- return false;
- }
-
if (mRequest.getActionCode() == ContactsRequest.ACTION_VIEW_CONTACT) {
- redirect = new Intent(this, QuickContactActivity.class);
- redirect.setAction(Intent.ACTION_VIEW);
- redirect.setData(mRequest.getContactUri());
- startActivity(redirect);
+ final Intent intent = ImplicitIntentsUtil.composeQuickContactIntent(
+ mRequest.getContactUri(), QuickContactActivity.MODE_FULLY_EXPANDED);
+ ImplicitIntentsUtil.startActivityInApp(this, intent);
return false;
}
return true;
@@ -894,8 +886,9 @@
@Override
public void onViewContactAction(Uri contactLookupUri) {
- QuickContact.showQuickContact(PeopleActivity.this, (Rect) null, contactLookupUri,
- QuickContactActivity.MODE_FULLY_EXPANDED, null);
+ final Intent intent = ImplicitIntentsUtil.composeQuickContactIntent(contactLookupUri,
+ QuickContactActivity.MODE_FULLY_EXPANDED);
+ ImplicitIntentsUtil.startActivityInApp(PeopleActivity.this, intent);
}
@Override
@@ -932,7 +925,8 @@
@Override
public void onCreateNewContactAction() {
- startActivity(new Intent(Intent.ACTION_INSERT, Contacts.CONTENT_URI));
+ ImplicitIntentsUtil.startActivityInApp(PeopleActivity.this,
+ new Intent(Intent.ACTION_INSERT, Contacts.CONTENT_URI));
}
@Override
@@ -940,8 +934,8 @@
Intent intent = new Intent(Settings.ACTION_ADD_ACCOUNT);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
intent.putExtra(Settings.EXTRA_AUTHORITIES,
- new String[] { ContactsContract.AUTHORITY });
- startActivity(intent);
+ new String[]{ContactsContract.AUTHORITY});
+ ImplicitIntentsUtil.startActivityOutsideApp(PeopleActivity.this, intent);
}
@Override
@@ -957,8 +951,9 @@
@Override
public void onContactSelected(Uri contactUri, Rect targetRect) {
- QuickContact.showQuickContact(PeopleActivity.this, targetRect, contactUri,
- QuickContactActivity.MODE_FULLY_EXPANDED, null);
+ final Intent intent = ImplicitIntentsUtil.composeQuickContactIntent(contactUri,
+ QuickContactActivity.MODE_FULLY_EXPANDED);
+ ImplicitIntentsUtil.startActivityInApp(PeopleActivity.this, intent);
}
@Override
@@ -1116,13 +1111,13 @@
ContactsContract.AUTHORITY
});
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
- startActivity(intent);
+ ImplicitIntentsUtil.startActivityInAppIfPossible(this, intent);
return true;
}
case R.id.export_database: {
final Intent intent = new Intent("com.android.providers.contacts.DUMP_DATABASE");
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
- startActivity(intent);
+ ImplicitIntentsUtil.startActivityOutsideApp(this, intent);
return true;
}
}
@@ -1263,7 +1258,7 @@
intent.putExtras(extras);
}
try {
- startActivity(intent);
+ ImplicitIntentsUtil.startActivityInApp(PeopleActivity.this, intent);
} catch (ActivityNotFoundException ex) {
Toast.makeText(PeopleActivity.this, R.string.missing_app,
Toast.LENGTH_SHORT).show();
diff --git a/src/com/android/contacts/activities/ShowOrCreateActivity.java b/src/com/android/contacts/activities/ShowOrCreateActivity.java
index 0489065..da5bb9d 100755
--- a/src/com/android/contacts/activities/ShowOrCreateActivity.java
+++ b/src/com/android/contacts/activities/ShowOrCreateActivity.java
@@ -36,6 +36,7 @@
import com.android.contacts.common.ContactsUtils;
import com.android.contacts.ContactsActivity;
import com.android.contacts.R;
+import com.android.contacts.common.util.ImplicitIntentsUtil;
import com.android.contacts.util.NotifyingAsyncQueryHandler;
/**
@@ -173,7 +174,7 @@
// If we only found one item, jump right to viewing it
final Uri contactUri = Contacts.getLookupUri(contactId, lookupKey);
final Intent viewIntent = new Intent(Intent.ACTION_VIEW, contactUri);
- startActivity(viewIntent);
+ ImplicitIntentsUtil.startActivityInApp(this, viewIntent);
finish();
} else if (count > 1) {
@@ -192,7 +193,7 @@
createIntent.putExtras(mCreateExtras);
createIntent.setType(RawContacts.CONTENT_TYPE);
- startActivity(createIntent);
+ ImplicitIntentsUtil.startActivityInApp(this, createIntent);
finish();
} else {
@@ -249,7 +250,7 @@
public void onClick(DialogInterface dialog, int which) {
if (mIntent != null) {
- mParent.startActivity(mIntent);
+ ImplicitIntentsUtil.startActivityInApp(mParent, mIntent);
}
mParent.finish();
}
diff --git a/src/com/android/contacts/editor/ContactEditorBaseFragment.java b/src/com/android/contacts/editor/ContactEditorBaseFragment.java
index 03ac880..1d3fbee 100644
--- a/src/com/android/contacts/editor/ContactEditorBaseFragment.java
+++ b/src/com/android/contacts/editor/ContactEditorBaseFragment.java
@@ -36,6 +36,7 @@
import com.android.contacts.common.model.ValuesDelta;
import com.android.contacts.common.model.account.AccountType;
import com.android.contacts.common.model.account.AccountWithDataSet;
+import com.android.contacts.common.util.ImplicitIntentsUtil;
import com.android.contacts.editor.AggregationSuggestionEngine.Suggestion;
import com.android.contacts.list.UiIntentActions;
import com.android.contacts.quickcontact.QuickContactActivity;
@@ -1275,7 +1276,8 @@
if (saveSucceeded && contactLookupUri != null) {
final Uri lookupUri = maybeConvertToLegacyLookupUri(
mContext, contactLookupUri, mLookupUri);
- resultIntent = composeQuickContactsIntent(lookupUri);
+ resultIntent = ImplicitIntentsUtil.composeQuickContactIntent(lookupUri,
+ QuickContactActivity.MODE_FULLY_EXPANDED);
} else {
resultIntent = null;
}
@@ -1535,17 +1537,4 @@
// Otherwise pass back a lookup-style Uri
return contactLookupUri;
}
-
- /**
- * Creates the result Intent for the given contactLookupUri that should started after a
- * successful saving a contact.
- */
- protected static Intent composeQuickContactsIntent(Uri contactLookupUri) {
- final Intent intent = new Intent(QuickContact.ACTION_QUICK_CONTACT);
- intent.setData(contactLookupUri);
- intent.putExtra(QuickContact.EXTRA_MODE, QuickContactActivity.MODE_FULLY_EXPANDED);
- // Make sure not to show QuickContacts on top of another QuickContacts.
- intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
- return intent;
- }
}
diff --git a/src/com/android/contacts/group/GroupBrowseListFragment.java b/src/com/android/contacts/group/GroupBrowseListFragment.java
index 81cc28c..d39501a 100644
--- a/src/com/android/contacts/group/GroupBrowseListFragment.java
+++ b/src/com/android/contacts/group/GroupBrowseListFragment.java
@@ -44,6 +44,7 @@
import com.android.contacts.GroupListLoader;
import com.android.contacts.R;
+import com.android.contacts.common.util.ImplicitIntentsUtil;
import com.android.contacts.group.GroupBrowseListAdapter.GroupListItemViewCache;
import com.android.contacts.common.ContactsUtils;
import com.android.contacts.common.list.AutoScrollListView;
@@ -141,7 +142,7 @@
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
intent.putExtra(Settings.EXTRA_AUTHORITIES,
new String[] { ContactsContract.AUTHORITY });
- startActivity(intent);
+ ImplicitIntentsUtil.startActivityOutsideApp(getActivity(), intent);
}
});
setAddAccountsVisibility(!ContactsUtils.areGroupWritableAccountsAvailable(mContext));
diff --git a/src/com/android/contacts/group/GroupDetailFragment.java b/src/com/android/contacts/group/GroupDetailFragment.java
index c12595d..c9cf6bd 100644
--- a/src/com/android/contacts/group/GroupDetailFragment.java
+++ b/src/com/android/contacts/group/GroupDetailFragment.java
@@ -51,6 +51,7 @@
import com.android.contacts.GroupMetaDataLoader;
import com.android.contacts.R;
import com.android.contacts.common.ContactPhotoManager;
+import com.android.contacts.common.util.ImplicitIntentsUtil;
import com.android.contacts.interactions.GroupDeletionDialogFragment;
import com.android.contacts.common.list.ContactTileAdapter;
import com.android.contacts.common.list.ContactTileView;
@@ -398,7 +399,7 @@
intent.setClassName(accountType.syncAdapterPackageName,
accountType.getViewGroupActivity());
try {
- startActivity(intent);
+ ImplicitIntentsUtil.startActivityInApp(getActivity(), intent);
} catch (ActivityNotFoundException e) {
Log.e(TAG, "startActivity() failed: " + e);
Toast.makeText(getActivity(), R.string.missing_app,
diff --git a/src/com/android/contacts/list/ContactsRequest.java b/src/com/android/contacts/list/ContactsRequest.java
index 68b06fa..636fe58 100644
--- a/src/com/android/contacts/list/ContactsRequest.java
+++ b/src/com/android/contacts/list/ContactsRequest.java
@@ -82,7 +82,6 @@
private boolean mValid = true;
private int mActionCode = ACTION_DEFAULT;
- private Intent mRedirectIntent;
private CharSequence mTitle;
private boolean mSearchMode;
private String mQueryString;
@@ -95,7 +94,6 @@
public String toString() {
return "{ContactsRequest:mValid=" + mValid
+ " mActionCode=" + mActionCode
- + " mRedirectIntent=" + mRedirectIntent
+ " mTitle=" + mTitle
+ " mSearchMode=" + mSearchMode
+ " mQueryString=" + mQueryString
@@ -114,14 +112,6 @@
mValid = flag;
}
- public Intent getRedirectIntent() {
- return mRedirectIntent;
- }
-
- public void setRedirectIntent(Intent intent) {
- mRedirectIntent = intent;
- }
-
public void setActivityTitle(CharSequence title) {
mTitle = title;
}
diff --git a/src/com/android/contacts/list/DefaultContactBrowseListFragment.java b/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
index 4630202..fefe28b 100644
--- a/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
+++ b/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
@@ -39,6 +39,7 @@
import com.android.contacts.common.list.ContactListItemView;
import com.android.contacts.common.list.DefaultContactListAdapter;
import com.android.contacts.common.list.ProfileAndContactsLoader;
+import com.android.contacts.common.util.ImplicitIntentsUtil;
import com.android.contacts.editor.ContactEditorFragment;
import com.android.contacts.common.util.AccountFilterUtil;
@@ -251,7 +252,7 @@
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_INSERT, Contacts.CONTENT_URI);
intent.putExtra(ContactEditorFragment.INTENT_EXTRA_NEW_LOCAL_PROFILE, true);
- startActivity(intent);
+ ImplicitIntentsUtil.startActivityInApp(getActivity(), intent);
}
});
}
diff --git a/src/com/android/contacts/quickcontact/QuickContactActivity.java b/src/com/android/contacts/quickcontact/QuickContactActivity.java
index 8968939..bec1568 100644
--- a/src/com/android/contacts/quickcontact/QuickContactActivity.java
+++ b/src/com/android/contacts/quickcontact/QuickContactActivity.java
@@ -121,6 +121,7 @@
import com.android.contacts.common.model.dataitem.StructuredNameDataItem;
import com.android.contacts.common.model.dataitem.StructuredPostalDataItem;
import com.android.contacts.common.model.dataitem.WebsiteDataItem;
+import com.android.contacts.common.util.ImplicitIntentsUtil;
import com.android.contacts.common.util.DateUtils;
import com.android.contacts.common.util.MaterialColorMapUtils;
import com.android.contacts.common.util.MaterialColorMapUtils.MaterialPalette;
@@ -377,7 +378,7 @@
mHasIntentLaunched = true;
try {
- startActivity(intent);
+ ImplicitIntentsUtil.startActivityInAppIfPossible(QuickContactActivity.this, intent);
} catch (SecurityException ex) {
Toast.makeText(QuickContactActivity.this, R.string.missing_app,
Toast.LENGTH_SHORT).show();
@@ -2148,6 +2149,7 @@
private Intent getEditContactIntent() {
final Intent intent = new Intent(Intent.ACTION_EDIT, mContactData.getLookupUri());
+ intent.setPackage(this.getPackageName());
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
return intent;
}
@@ -2229,7 +2231,7 @@
try {
mHasIntentLaunched = true;
- this.startActivity(chooseIntent);
+ ImplicitIntentsUtil.startActivityOutsideApp(this, intent);
} catch (final ActivityNotFoundException ex) {
Toast.makeText(this, R.string.share_error, Toast.LENGTH_SHORT).show();
}
diff --git a/src/com/android/contacts/quickcontact/QuickContactBroadcastReceiver.java b/src/com/android/contacts/quickcontact/QuickContactBroadcastReceiver.java
index e0850d7..dae10af 100644
--- a/src/com/android/contacts/quickcontact/QuickContactBroadcastReceiver.java
+++ b/src/com/android/contacts/quickcontact/QuickContactBroadcastReceiver.java
@@ -16,6 +16,8 @@
package com.android.contacts.quickcontact;
+import com.android.contacts.common.util.ImplicitIntentsUtil;
+
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
@@ -35,6 +37,6 @@
newIntent.setSourceBounds(intent.getSourceBounds());
newIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
newIntent.setData(dataUri);
- context.startActivity(newIntent);
+ ImplicitIntentsUtil.startActivityInApp(context, newIntent);
}
}