Conditionally removing SIP call button
Bug: 3413467
Change-Id: Ic5364825bb8e55bcb9022d3c796a8ea5a476dfae
diff --git a/src/com/android/contacts/quickcontact/QuickContactWindow.java b/src/com/android/contacts/quickcontact/QuickContactWindow.java
index bbb928d..5ec8dc7 100644
--- a/src/com/android/contacts/quickcontact/QuickContactWindow.java
+++ b/src/com/android/contacts/quickcontact/QuickContactWindow.java
@@ -623,7 +623,7 @@
* Handle the result from the {@link #TOKEN_DATA} query.
*/
private void handleData(Cursor cursor) {
- final ResolveCache cache = ResolveCache.getInstance(mContext.getPackageManager());
+ final ResolveCache cache = ResolveCache.getInstance(mContext);
if (cursor == null) return;
if (cursor.getCount() == 0) {
Toast.makeText(mContext, R.string.invalidContactMessage, Toast.LENGTH_LONG).show();
diff --git a/src/com/android/contacts/quickcontact/ResolveCache.java b/src/com/android/contacts/quickcontact/ResolveCache.java
index 5d84253..2b9e92f 100644
--- a/src/com/android/contacts/quickcontact/ResolveCache.java
+++ b/src/com/android/contacts/quickcontact/ResolveCache.java
@@ -16,14 +16,17 @@
package com.android.contacts.quickcontact;
+import com.android.contacts.util.PhoneCapabilityTester;
import com.google.android.collect.Sets;
+import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.graphics.drawable.Drawable;
+import android.provider.ContactsContract.CommonDataKinds.SipAddress;
import android.text.TextUtils;
import java.lang.ref.SoftReference;
@@ -51,6 +54,7 @@
"com.android.phone",
"com.android.browser");
+ private final Context mContext;
private final PackageManager mPackageManager;
private static ResolveCache sInstance;
@@ -59,9 +63,9 @@
* Returns an instance of the ResolveCache. Only one internal instance is kept, so
* the argument packageManagers is ignored for all but the first call
*/
- public synchronized static ResolveCache getInstance(PackageManager packageManager) {
+ public synchronized static ResolveCache getInstance(Context context) {
if (sInstance == null) {
- return sInstance = new ResolveCache(packageManager);
+ return sInstance = new ResolveCache(context.getApplicationContext());
}
return sInstance;
}
@@ -81,8 +85,10 @@
private HashMap<String, Entry> mCache = new HashMap<String, Entry>();
- private ResolveCache(PackageManager packageManager) {
- mPackageManager = packageManager;
+
+ private ResolveCache(Context context) {
+ mContext = context;
+ mPackageManager = context.getPackageManager();
}
/**
@@ -95,7 +101,12 @@
if (entry != null) return entry;
entry = new Entry();
- final Intent intent = action.getIntent();
+ Intent intent = action.getIntent();
+ if (SipAddress.CONTENT_ITEM_TYPE.equals(mimeType)
+ && !PhoneCapabilityTester.isSipPhone(mContext)) {
+ intent = null;
+ }
+
if (intent != null) {
final List<ResolveInfo> matches = mPackageManager.queryIntentActivities(intent,
PackageManager.MATCH_DEFAULT_ONLY);