在Android 4.4.2上更改SMS应用程序默认值

时间:2014-01-31 22:13:52

标签: java android android-intent sms default

我会更改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>

谢谢。

2 个答案:

答案 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