Verify that only package supporting DIAL intent can be set as default dialer
Bug: 20303674
Change-Id: Id2e0b95a3731d7675a88ae31778bc4308d9682ac
diff --git a/tests/tests/telecom/src/android/telecom/cts/DefaultDialerOperationsTest.java b/tests/tests/telecom/src/android/telecom/cts/DefaultDialerOperationsTest.java
index 947ebc2..bef2de5 100644
--- a/tests/tests/telecom/src/android/telecom/cts/DefaultDialerOperationsTest.java
+++ b/tests/tests/telecom/src/android/telecom/cts/DefaultDialerOperationsTest.java
@@ -16,8 +16,10 @@
package android.telecom.cts;
+import android.content.ComponentName;
import android.content.ContentValues;
import android.content.Context;
+import android.content.pm.PackageManager;
import android.provider.VoicemailContract.Voicemails;
import android.telecom.PhoneAccountHandle;
import android.telecom.TelecomManager;
@@ -152,4 +154,29 @@
// No exception if the calling package is the default dialer.
mTelecomManager.getAdnUriForPhoneAccount(mPhoneAccountHandle);
}
+
+ public void testSetDefaultDialerNoDialIntent_notSupported() throws Exception {
+ final PackageManager pm = mContext.getPackageManager();
+ final ComponentName name = new ComponentName(mContext,
+ "android.telecom.cts.MockDialerActivity");
+ try {
+ pm.setComponentEnabledSetting(name, PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
+ PackageManager.DONT_KILL_APP);
+
+ final String result =
+ TestUtils.setDefaultDialer(getInstrumentation(), TestUtils.PACKAGE);
+ assertNotSame(result, TestUtils.PACKAGE);
+ assertTrue("Expected failure indicating that this was not an installed dialer app",
+ result.contains("is not an installed Dialer app"));
+ } finally {
+ pm.setComponentEnabledSetting(name, PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
+ PackageManager.DONT_KILL_APP);
+ }
+
+ // Now that the activity is present again in the package manager, this should succeed.
+ final String result = TestUtils.setDefaultDialer(getInstrumentation(), TestUtils.PACKAGE);
+ assertTrue("Expected success message indicating that " + TestUtils.PACKAGE + " was set as "
+ + "default dialer.", result.contains("set as default dialer"));
+ assertEquals(TestUtils.PACKAGE, TestUtils.getDefaultDialer(getInstrumentation()));
+ }
}
diff --git a/tests/tests/telecom/src/android/telecom/cts/TestUtils.java b/tests/tests/telecom/src/android/telecom/cts/TestUtils.java
index 8cca04c..a37f9fd 100644
--- a/tests/tests/telecom/src/android/telecom/cts/TestUtils.java
+++ b/tests/tests/telecom/src/android/telecom/cts/TestUtils.java
@@ -54,9 +54,9 @@
return pm.hasSystemFeature(PackageManager.FEATURE_TELEPHONY);
}
- public static void setDefaultDialer(Instrumentation instrumentation, String packageName)
+ public static String setDefaultDialer(Instrumentation instrumentation, String packageName)
throws Exception {
- executeShellCommand(instrumentation, COMMAND_SET_DEFAULT_DIALER + packageName);
+ return executeShellCommand(instrumentation, COMMAND_SET_DEFAULT_DIALER + packageName);
}
public static String getDefaultDialer(Instrumentation instrumentation) throws Exception {