我们在谷歌播放中有短信拦截应用程序。如果满足任何阻塞条件,它会阻止短信,否则我们允许短信到本机收件箱。除了android 4.4(Kitkat)之外,它在所有版本上运行良好。我们试图实现4.4的新短信api,并在将该应用程序作为默认短信应用程序后成功阻止短信。但问题是,如果短信不满足任何短信阻塞条件,那么我们没有任何选择将短信移动到本机收件箱。
我们的其他选择是创建具有所有短信相关功能的总短信应用。但在我们的案例中它毫无用处。
因此,如果我不想阻止短信,我可以将短信转移到其他短信应用程序吗?
请帮助我..从这个问题获得kitkat用户的大量一星评论。
答案 0 :(得分:3)
电话内容提供商(“SMS提供商”)允许应用在设备上读取和写入SMS和MMS消息。它包括收到,草拟,发送,待处理等短信和彩信的表格。
从Android 4.4开始,系统设置允许用户选择“默认短信应用”。一旦选中,只有默认的SMS应用程序能够写入SMS提供程序,并且当用户收到SMS或当用户收到MMS时,只有默认SMS应用程序接收SMS_DELIVER_ACTION广播时才会收到SMS或WAP_PUSH_DELIVER_ACTION广播。默认的SMS应用程序负责在收到或发送新消息时向SMS提供商写入详细信息。
未选择作为默认SMS应用程序的其他应用程序只能读取SMS提供程序,但也可能在收到新SMS时收到通知,通过侦听SMS_RECEIVED_ACTION广播,这是一个可以传送到的不可中止的广播多个应用。此广播适用于以下内容 - 虽然未被选为默认短信应用程序 - 需要阅读特殊的传入消息,例如执行电话号码验证。
有关详情,请参阅博客文章Getting Your SMS Apps Ready for 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>