diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 3c7b4db..e9f6618 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -56,6 +56,13 @@
+
+
+
+
+
+
+
+
diff --git a/src/com/android/messaging/ui/UIIntentsImpl.java b/src/com/android/messaging/ui/UIIntentsImpl.java
index d64082d..da6fc90 100644
--- a/src/com/android/messaging/ui/UIIntentsImpl.java
+++ b/src/com/android/messaging/ui/UIIntentsImpl.java
@@ -18,6 +18,7 @@ package com.android.messaging.ui;
import android.app.Activity;
import android.app.Fragment;
import android.app.PendingIntent;
+import android.app.role.RoleManager;
import android.appwidget.AppWidgetManager;
import android.content.ActivityNotFoundException;
import android.content.ClipData;
@@ -497,9 +498,8 @@ public class UIIntentsImpl extends UIIntents {
@Override
public Intent getChangeDefaultSmsAppIntent(final Activity activity) {
- final Intent intent = new Intent(Telephony.Sms.Intents.ACTION_CHANGE_DEFAULT);
- intent.putExtra(Telephony.Sms.Intents.EXTRA_PACKAGE_NAME, activity.getPackageName());
- return intent;
+ RoleManager roleManager = activity.getSystemService(RoleManager.class);
+ return roleManager.createRequestRoleIntent(RoleManager.ROLE_SMS);
}
@Override
diff --git a/src/com/android/messaging/util/ChangeDefaultSmsAppHelper.java b/src/com/android/messaging/util/ChangeDefaultSmsAppHelper.java
index 6cf2f25..bcb2f5c 100644
--- a/src/com/android/messaging/util/ChangeDefaultSmsAppHelper.java
+++ b/src/com/android/messaging/util/ChangeDefaultSmsAppHelper.java
@@ -66,7 +66,7 @@ public class ChangeDefaultSmsAppHelper {
// Is the default sms app?
} else if (!isDefaultSmsApp) {
- mChangeSmsAppSettingRunnable = new ChangeSmsAppSettingRunnable(activity, fragment);
+ mChangeSmsAppSettingRunnable = new ChangeSmsAppSettingRunnable(activity);
promptToChangeDefaultSmsApp(sending, runAfterMadeDefault,
composeView, rootView, activity);
}
@@ -104,22 +104,16 @@ public class ChangeDefaultSmsAppHelper {
private class ChangeSmsAppSettingRunnable implements Runnable {
private final Activity mActivity;
- private final Fragment mFragment;
- public ChangeSmsAppSettingRunnable(final Activity activity, final Fragment fragment) {
+ public ChangeSmsAppSettingRunnable(final Activity activity) {
mActivity = activity;
- mFragment = fragment;
}
@Override
public void run() {
try {
final Intent intent = UIIntents.get().getChangeDefaultSmsAppIntent(mActivity);
- if (mFragment != null) {
- mFragment.startActivityForResult(intent, REQUEST_SET_DEFAULT_SMS_APP);
- } else {
- mActivity.startActivityForResult(intent, REQUEST_SET_DEFAULT_SMS_APP);
- }
+ mActivity.startActivityForResult(intent, REQUEST_SET_DEFAULT_SMS_APP);
} catch (final ActivityNotFoundException ex) {
// We shouldn't get here, but the monkey on JB MR0 can trigger it.
LogUtil.w(LogUtil.BUGLE_TAG, "Couldn't find activity:", ex);
@@ -153,5 +147,3 @@ public class ChangeDefaultSmsAppHelper {
}
}
}
-
-
diff --git a/src/com/android/messaging/util/PhoneUtils.java b/src/com/android/messaging/util/PhoneUtils.java
index 08889b8..9f0fa8e 100644
--- a/src/com/android/messaging/util/PhoneUtils.java
+++ b/src/com/android/messaging/util/PhoneUtils.java
@@ -16,6 +16,7 @@
package com.android.messaging.util;
+import android.app.role.RoleManager;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
@@ -897,8 +898,9 @@ public abstract class PhoneUtils {
*/
public boolean isDefaultSmsApp() {
if (OsUtil.isAtLeastKLP()) {
- final String configuredApplication = Telephony.Sms.getDefaultSmsPackage(mContext);
- return mContext.getPackageName().equals(configuredApplication);
+ RoleManager roleManager = mContext.getSystemService(RoleManager.class);
+ return roleManager.isRoleAvailable(RoleManager.ROLE_SMS)
+ && roleManager.isRoleHeld(RoleManager.ROLE_SMS);
}
return true;
}