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; }