android 4.4(kitkat)版本中的SMS阻止和允许问题

时间:2013-11-29 07:56:38

标签: android sms

我们在谷歌播放中有短信拦截应用程序。如果满足任何阻塞条件,它会阻止短信,否则我们允许短信到本机收件箱。除了android 4.4(Kitkat)之外,它在所有版本上运行良好。我们试图实现4.4的新短信api,并在将该应用程序作为默认短信应用程序后成功阻止短信。但问题是,如果短信不满足任何短信阻塞条件,那么我们没有任何选择将短信移动到本机收件箱。

我们的其他选择是创建具有所有短信相关功能的总短信应用。但在我们的案例中它毫无用处。

因此,如果我不想阻止短信,我可以将短信转移到其他短信应用程序吗?

请帮助我..从这个问题获得kitkat用户的大量一星评论。

1 个答案:

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