我会更改Android 4.4.2上的默认短信应用
我使用此代码:
Intent sendIntent = new Intent(Telephony.Sms.Intents.ACTION_CHANGE_DEFAULT);
sendIntent.putExtra(Telephony.Sms.Intents.EXTRA_PACKAGE_NAME, context.getPackageName());
startActivity(sendIntent);
我该如何解决这个问题?我怎么能要求用我的应用程序更改默认的短信应用程序?
我的接收者:
<receiver android:name="receiver.SMSHandlerReceiver"
android:permission="android.permission.BROADCAST_SMS" >
<intent-filter>
<action android:name="android.provider.Telephony.SMS_DELIVER" />
</intent-filter>
</receiver>
谢谢。
答案 0 :(得分:6)
似乎如果您希望自己的应用出现在默认短信应用设置中,则必须首先使其符合条件,否则您无法将应用设置为默认短信应用。我有同样的问题,所以我做了那些简单的步骤然后我可以选择我的应用程序默认,在设置和我的代码,我以前不能。
所以:
您必须拥有包含带有ACTION_SENDTO(“android.intent.action.SENDTO”)和模式短信,smsto,mms和mmsto的意图过滤器的活动。在清单文件中执行此操作。我做的是用这些参数创建一个我不会使用的空活动。
通过使用ACTION_RESPOND_VIA_MESSAGE(“android.intent.action.RESPOND_VIA_MESSAGE”)以及schemas,sms,smsto,mms和mmsto创建包含意图过滤器的空服务来执行相同操作。此服务还必须具有SEND_RESPOND_VIA_MESSAGE权限。您必须在清单中添加所有必需的权限。
使用MIME类型application / vnd.wap.mms-message创建一个包含带有WAP_PUSH_DELIVER_ACTION(“android.provider.Telephony.WAP_PUSH_DELIVER”)的intent过滤器的空BroadcastReceiver。广播接收器还必须具有BROADCAST_WAP_PUSH权限。您必须在清单中添加所有必需的权限。
使用SMS_DELIVER_ACTION(“android.provider.Telephony.SMS_DELIVER”)创建一个包含intent过滤器的空BroadcastReceiver。广播接收器还必须要求BROADCAST_SMS权限。您必须在清单中添加所有必需的权限。
设置所有这些参数而不丢失参数非常重要。完成所有这些步骤后,您的应用程序将符合条件,然后您可以将其设置为默认的短信应用程序,将这些创建的类留空,并坚持使用旧的做法。目标只是将您的应用程序设置为默认值,因此它将像以前一样完全无需代码修改。
答案 1 :(得分:5)
我会更改Android 4.4.2上的默认短信应用
您无法更改默认的短信应用。但是,您可以要求用户使用Telephony.Sms.Intents.ACTION_CHANGE_DEFAULT
更改默认的SMS应用程序。这包含在the official blog post on the SMS changes in Android 4.4。