diff options
| author | Makoto Onuki <omakoto@google.com> | 2012-05-25 17:09:05 -0700 |
|---|---|---|
| committer | Makoto Onuki <omakoto@google.com> | 2012-05-30 13:44:56 -0700 |
| commit | bba33cd86ea73fa26f8ed2e8e69c113c5e15272f (patch) | |
| tree | a82a8593a44d040142c61c230ba34e273e4e14e3 /core | |
| parent | 58296baa78b56401874ec719727243e9c0b0266e (diff) | |
| download | frameworks_base-bba33cd86ea73fa26f8ed2e8e69c113c5e15272f.zip frameworks_base-bba33cd86ea73fa26f8ed2e8e69c113c5e15272f.tar.gz frameworks_base-bba33cd86ea73fa26f8ed2e8e69c113c5e15272f.tar.bz2 | |
Fix bug 6563184: API compatibility issue with quick contact
Add FLAG_ACTIVITY_NEW_TASK if the starting contentext is not an activity.
Change-Id: I3c03a1acc12798d846c6f321cf46f77a2833172b
Diffstat (limited to 'core')
| -rw-r--r-- | core/java/android/provider/ContactsContract.java | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/core/java/android/provider/ContactsContract.java b/core/java/android/provider/ContactsContract.java index 2782dca..e8f87bb 100644 --- a/core/java/android/provider/ContactsContract.java +++ b/core/java/android/provider/ContactsContract.java @@ -24,6 +24,7 @@ import android.content.ContentResolver; import android.content.ContentUris; import android.content.ContentValues; import android.content.Context; +import android.content.ContextWrapper; import android.content.CursorEntityIterator; import android.content.Entity; import android.content.EntityIterator; @@ -7711,9 +7712,19 @@ public final class ContactsContract { */ public static void showQuickContact(Context context, Rect target, Uri lookupUri, int mode, String[] excludeMimes) { + // When launching from an Activiy, we don't want to start a new task, but otherwise + // we *must* start a new task. (Otherwise startActivity() would crash.) + Context actualContext = context; + while ((actualContext instanceof ContextWrapper) + && !(actualContext instanceof Activity)) { + actualContext = ((ContextWrapper) actualContext).getBaseContext(); + } + final int intentFlags = (actualContext instanceof Activity) + ? Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET + : Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK; + // Launch pivot dialog through intent for now - final Intent intent = new Intent(ACTION_QUICK_CONTACT) - .addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); + final Intent intent = new Intent(ACTION_QUICK_CONTACT).addFlags(intentFlags); intent.setData(lookupUri); intent.setSourceBounds(target); |
