summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorMakoto Onuki <omakoto@google.com>2012-05-25 17:09:05 -0700
committerMakoto Onuki <omakoto@google.com>2012-05-30 13:44:56 -0700
commitbba33cd86ea73fa26f8ed2e8e69c113c5e15272f (patch)
treea82a8593a44d040142c61c230ba34e273e4e14e3 /core
parent58296baa78b56401874ec719727243e9c0b0266e (diff)
downloadframeworks_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.java15
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);