diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 024f7ab..4682e58 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -58,6 +58,13 @@
     <uses-feature android:name="android.hardware.microphone" android:required="false" />
     <uses-feature android:name="android.hardware.screen.portrait" android:required="false" />
 
+    <queries>
+        <intent>
+            <action android:name="android.intent.action.SENDTO"/>
+            <data android:scheme="smsto" android:host="*" />
+        </intent>
+    </queries>
+
     <application
         android:name="com.android.messaging.BugleApplication"
         android:allowBackup="false"
@@ -391,6 +398,7 @@
                   android:permission="android.permission.BROADCAST_SMS">
             <intent-filter>
                 <action android:name="android.provider.Telephony.SMS_DELIVER" />
+                <category android:name="android.intent.category.DEFAULT"/>
             </intent-filter>
         </receiver>
 
diff --git a/src/com/android/messaging/ui/UIIntentsImpl.java b/src/com/android/messaging/ui/UIIntentsImpl.java
index 9281899..0fabfdd 100644
--- a/src/com/android/messaging/ui/UIIntentsImpl.java
+++ b/src/com/android/messaging/ui/UIIntentsImpl.java
@@ -18,6 +18,7 @@
 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;
@@ -511,9 +512,8 @@
 
     @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 @@
 
         // 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 @@
 
     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 @@
         }
     }
 }
-
-
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 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;
     }
