我们在谷歌播放上有实时短信屏蔽应用程序。如果满足任何阻止条件,它就会阻止短信,否则我们会允许短信进入本机收件箱。它在除android 4.4(Kitkat)之外的所有版本上都运行良好。我们试图实现4.4版的新短信api,并在将该应用程序作为默认短信应用程序后成功阻止了短信。但问题是,如果短信不满足任何短信屏蔽条件,那么我们就没有任何选择将短信转移到本地收件箱。
我们的另一个选择是创建具有所有短信相关功能的短信应用程序。但在我们的情况下,这是无用的。
那么,在新的安卓套件kat中,如果我不想屏蔽短信,我可以将短信转移到其他短信应用程序,还有其他选择吗?
请帮我…获得了很多来自kitkat用户的一星评论。
电话内容提供商("SMS提供商")允许应用程序在设备上读写SMS和MMS消息。它包括接收、起草、发送、挂起等短信和彩信的表格。
从Android 4.4开始,系统设置允许用户选择"默认短信应用程序"。一旦选择,只有默认的短信应用程序能够写入短信提供商,并且只有默认的SMS应用程序在用户接收短信时接收SMS_DELIVER_ACTION广播,或在用户接收MMS时接收WAP_PUSH_DELIVER_ACTION.广播。默认的短信应用程序负责在收到或发送新消息时向短信提供商写入详细信息。
未被选为默认SMS应用程序的其他应用程序只能读取SMS提供程序,但也可以通过收听SMS_RECEIVED_ACTION广播来通知新的SMS何时到达,这是一种不可中止的广播,可以传递到多个应用程序。此广播适用于那些虽然未被选为默认短信应用程序但需要读取特殊传入消息(如执行电话号码验证)的应用程序。
欲了解更多信息,请阅读博客文章《让你的短信应用程序为KitKat做好准备》。
来自android博客的示例清单是;
<manifest>
...
<application>
<!-- BroadcastReceiver that listens for incoming SMS messages -->
<receiver android:name=".SmsReceiver"
android:permission="android.permission.BROADCAST_SMS">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_DELIVER" />
</intent-filter>
</receiver>
<!-- BroadcastReceiver that listens for incoming MMS messages -->
<receiver android:name=".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>
<!-- Activity that allows the user to send new SMS/MMS messages -->
<activity android:name=".ComposeSmsActivity" >
<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" />
</intent-filter>
</activity>
<!-- Service that delivers messages from the phone "quick response" -->
<service android:name=".HeadlessSmsSendService"
android:permission="android.permission.SEND_RESPOND_VIA_MESSAGE"
android:exported="true" >
<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>