Android – 如何以编程方式使我的应用程序默认短信应用程序

我正在开发一个短信阻止应用程序。 哪个可以正常使用Jelly-Bean。 它不是从Kitkat到Marshmallow。 我搜索谷歌和每个人都建议取得用户的许可,使其成为这款手机的默认短信应用程序。

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { if(!Telephony.Sms.getDefaultSmsPackage(getApplicationContext()).equals(getApplicationContext().getPackageName())) { Intent intent = new Intent(Telephony.Sms.Intents.ACTION_CHANGE_DEFAULT); intent.putExtra(Telephony.Sms.Intents.EXTRA_PACKAGE_NAME, getApplicationContext().getPackageName()); startActivity(intent); } } 

清单文件:

                                                            

我用过这个代码示例。 它显示了一个带有手机短信应用的对话框。 我的应用没有显示在此列表中。

现在我想在此列表中显示我的应用程序,因此用户可以从此列表中选择我的应用程序,它将是该手机的默认短信应用程序。 我怎样才能做到这一点。 请回复example / code-sample。 谢谢。

我跟着它

不是根据你问题中的代码。 让我们回顾一下博文中的四个要求:

在广播接收器中,包括SMS_DELIVER_ACTION(“android.provider.Telephony.SMS_DELIVER”)的intentfilter。 广播接收器还必须要求BROADCAST_SMS权限。

你有这个,以PhoneStateReceiver的forms。

在广播接收器中,包括用于WAP_PUSH_DELIVER_ACTION(“android.provider.Telephony.WAP_PUSH_DELIVER”)的intentfilter,其MIME类型为“application / vnd.wap.mms-message”。 广播接收器还必须要求BROADCAST_WAP_PUSH权限。

你没有这个。

在提供新消息的活动中,包括ACTION_SENDTO(“android.intent.action.SENDTO”)的intentfilter,其中包含schemas,sms:,smsto:,mms:和mmsto:。

你有这个,以DashboardActivity的forms。

在服务中,包括ACTION_RESPONSE_VIA_MESSAGE(“android.intent.action.RESPOND_VIA_MESSAGE”)的intentfilter,其中包含schemas,sms:,smsto:,mms:和mmsto:。 此服务还必须具有SEND_RESPOND_VIA_MESSAGE权限。

你有这个,以HeadlessSmsSendService的forms。

因此,按照说明为WAP_PUSH_DELIVER_ACTION添加 ,看看是否有帮助。