I am building an Android app using Kotlin. I am trying building my app as Default SMS handler because it is asking for SMS permissions so that I need to make sure that it imply with the Google PlayStore's policy. But it is not showing any popup or dialog to prompt the user to set the app as default SMS handler. This is my code.
val setSmsAppIntent = Intent(Telephony.Sms.Intents.ACTION_CHANGE_DEFAULT)
setSmsAppIntent.putExtra(Telephony.Sms.Intents.EXTRA_PACKAGE_NAME, packageName)
startActivityForResult(setSmsAppIntent, DEFAULT_SMS_HANDLER_REQUEST)
When I run my code, it is not showing anything. What is wrong with my code and how can I fix it?
I tried this too.
private fun askDefaultSmsHandlerPermission() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
val roleManager: RoleManager = getSystemService(RoleManager::class.java)
// check if the app is having permission to be as default SMS app
val isRoleAvailable = roleManager.isRoleAvailable(RoleManager.ROLE_SMS)
if (isRoleAvailable) {
// check whether your app is already holding the default SMS app role.
val isRoleHeld = roleManager.isRoleHeld(RoleManager.ROLE_SMS)
if (isRoleHeld) {
val roleRequestIntent = roleManager.createRequestRoleIntent(RoleManager.ROLE_SMS)
startActivityForResult(roleRequestIntent, DEFAULT_SMS_HANDLER_REQUEST)
}
}
} else {
val intent = Intent(Telephony.Sms.Intents.ACTION_CHANGE_DEFAULT)
intent.putExtra(Telephony.Sms.Intents.EXTRA_PACKAGE_NAME, packageName)
startActivityForResult(intent, DEFAULT_SMS_HANDLER_REQUEST)
}
}
It is not working either.
This is my andoridmanifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:dist="http://schemas.android.com/apk/distribution"
package="com.forkthecoop.com22222">
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.SEND_SMS" />
<dist:module dist:instant="true" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" android:protectionLevel="signature" />
<uses-permission android:name="android.permission.RECEIVE_MMS" />
<uses-permission android:name="android.permission.RECEIVE_WAP_PUSH" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
android:name=".AppController"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.22222Com">
<activity android:theme="@style/Theme.22222Com.NoActionBar" android:name=".DisableVPNActivity" android:noHistory="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:theme="@style/Theme.22222Com.NoActionBar" android:name=".MainActivity" android:noHistory="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.app.role.SMS"/>
</intent-filter>
</activity>
<activity android:label="@string/register" android:name=".RegisterActivity" android:noHistory="true">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
</intent-filter>
</activity>
<activity android:label="@string/messages_activity_title" android:name=".MessageListActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
</intent-filter>
</activity>
<activity android:label="@string/send_message_activity_title" android:name=".SendMessageActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
</intent-filter>
</activity>
<activity android:noHistory="true" android:label="@string/message_details_activity_title" android:name=".MessageDetailsActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
</intent-filter>
</activity>
<activity android:noHistory="true" android:label="@string/reply_message_activity_title" android:name=".ReplyMessageActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
</intent-filter>
</activity>
<activity android:label="@string/confirm_message_activity_title" android:name=".ConfirmMessageActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
</intent-filter>
</activity>
<activity android:label="@string/client_list_activity_title" android:name=".ClientListActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
</intent-filter>
</activity>
<activity android:label="@string/update_location_activity_title" android:name=".UpdateLocationActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
</intent-filter>
</activity>
<activity android:label="@string/permission_usage_activity_title" android:name=".PermissionUsageActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
</intent-filter>
</activity>
<activity android:label="@string/enable_location_activity_title" android:name=".EnableLocationActivity" android:noHistory="true">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
</intent-filter>
</activity>
<activity android:label="@string/notice_activity_title" android:name=".FakeNewsWarningActivity" android:noHistory="true">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
</intent-filter>
</activity>
<activity android:label="@string/data_sync_activity_title" android:name=".DataSyncSwitchActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
</intent-filter>
</activity>
<activity android:label="@string/conversation_list_activity_title" android:name=".ConversationListActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
</intent-filter>
</activity>
<activity android:noHistory="true" android:label="@string/add_new_client_activity_title" android:name=".AddNewClientActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
</intent-filter>
</activity>
<activity android:label="@string/choose_message_type_activity_title" android:name=".ChooseOutgoingMessageTypeActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
</intent-filter>
</activity>
<!-- Activity that allows the user to send new SMS/MMS messages -->
<activity android:label="@string/send_ordinary_message_activity_title" android:name=".SendOrdinaryMessageActivity">
<intent-filter>
<action android:name="android.intent.action.SEND" />
<action android:name="android.intent.action.SENDTO" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="sms" />
<data android:scheme="smsto" />
<data android:scheme="mms" />
<data android:scheme="mmsto" />
<action android:name="android.intent.action.VIEW" />
</intent-filter>
</activity>
<receiver android:name=".RegisterReceiversScheduler">
<intent-filter>
<action android:name="com.forkthecoup.com22222.RegisterReceiversScheduler" ></action>
</intent-filter>
</receiver>
<receiver android:name=".ShareNewsRemainder">
<intent-filter>
<action android:name="com.forkthecoup.com22222.ShareNewsRemainder" ></action>
</intent-filter>
</receiver>
<service android:name="com.android.mms.transaction.TransactionService" />
<receiver android:name=".SmsListener" android:permission="android.permission.BROADCAST_SMS">
<intent-filter>
<action android:name="com.forkthecoup.com22222.SmsListener" ></action>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
<action android:name="android.provider.Telephony.SMS_DELIVER" />
</intent-filter>
</receiver>
<!-- <receiver-->
<!-- android:name=".messaging.SmsReceiver"-->
<!-- android:permission="android.permission.BROADCAST_SMS">-->
<!-- <intent-filter>-->
<!-- <action android:name="android.provider.Telephony.SMS_DELIVER" />-->
<!-- </intent-filter>-->
<!-- </receiver>-->
<receiver
android:name=".messaging.MmsReceiver"
android:permission="android.permission.BROADCAST_WAP_PUSH">
<intent-filter>
<action android:name="android.provider.Telephony.WAP_PUSH_DELIVER" />
<data android:mimeType="application/vnd.wap.mms-message" />
</intent-filter>
</receiver>
<receiver
android:name="com.klinker.android.send_message.MmsSentReceiver"
android:taskAffinity="com.klinker.android.messaging.MMS_SENT"/>
<receiver
android:name=".messaging.MmsReceivedReceiverImpl"
android:taskAffinity="com.klinker.android.messaging.MMS_RECEIVED"/>
<service
android:name=".messaging.HeadlessSmsSendService"
android:exported="true"
android:permission="android.permission.SEND_RESPOND_VIA_MESSAGE" >
<intent-filter>
<action android:name="android.intent.action.RESPOND_VIA_MESSAGE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="sms" />
<data android:scheme="smsto" />
<data android:scheme="mms" />
<data android:scheme="mmsto" />
</intent-filter>
</service>
</application>
</manifest>