Android 拦截收到的短信三星-安卓

Android 拦截收到的短信三星-安卓,android,Android,我正在使用Java中的以下代码拦截SMS public class SmsReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Bundle extras = intent.getExtras(); if (extras == null)

我正在使用Java中的以下代码拦截SMS

public class SmsReceiver extends BroadcastReceiver {

     @Override
     public void onReceive(Context context, Intent intent) {

            Bundle extras = intent.getExtras();
            if (extras == null)
                   return;


            Object[] pdus = (Object[]) extras.get("pdus");
            for (int i = 0; i < pdus.length; i++) {
                   SmsMessage SMessage = SmsMessage.createFromPdu((byte[]) pdus[i]);
                   String sender = SMessage.getOriginatingAddress();
                   String body = SMessage.getMessageBody().toString();
                    Log.i("TAG", body);
                   //... do whatever with the message here


            }
     }
}
公共类SmsReceiver扩展了BroadcastReceiver{
@凌驾
公共void onReceive(上下文、意图){
Bundle extras=intent.getExtras();
如果(附加==null)
返回;
Object[]pdus=(Object[])extras.get(“pdus”);
对于(int i=0;i
使用Manifest.xml中的以下接收方

</receiver>
<receiver android:name="com.example.test.SmsReceiver" >
    <intent-filter>
        <action android:name="android.provider.Telephony.SMS_RECEIVED" />
    </intent-filter>
</receiver>


Nexus 5可以正常工作,但三星没有,任何人都知道如何让它在三星正常工作。KitKat之前的短信广播可能会被拦截,甚至会被中止,但Hangouts仍会处理该消息。见此帖:

这是:

Hangouts已将其AbortsMSReceiver注册为优先级为“3”,因此将接收器优先级设置为“3”以上可以解决问题并拦截它。但是,如果您试图获取“first”消息,那么“999”应该可以做到这一点。但是,请注意,这并不理想,因为例如,反垃圾邮件应用程序可能需要在应用程序之前处理邮件,这取决于应用程序的功能。(这个问题——应用程序“为最高优先级而战”是Android改用KitKat的原因,不管是好是坏……)

这是Google Talk/Babel清单的摘录:

    <receiver android:name="com.google.android.apps.babel.sms.AbortSmsReceiver" android:permission="android.permission.BROADCAST_SMS" android:enabled="false">
        <intent-filter android:priority="3">
            <action android:name="android.provider.Telephony.SMS_RECEIVED" />
        </intent-filter>
    </receiver>

注意:高于“999”或低于“-999”的优先级为“系统级”-但是,文档中指出,请求高于此优先级的非系统应用程序将具有“不可预测”的行为。这绝对是我所看到的-应用程序将无法预测或可靠地“击败”高于该级别的其他应用程序(取决于设备、安装顺序、重新启动等)。

嘿,Mike,是4.1.2是的,Hangout正在运行是否可以在不禁用Hangout的情况下执行此操作?OP没有指定他正在尝试中止消息。不过,我编辑了我的回复,也涵盖了这一点。谢谢吉姆,所有的数字都不起作用,但999现在运行良好,你能把它添加到你的答案中吗。
    <receiver android:name="com.google.android.apps.babel.sms.SmsReceiver" android:permission="android.permission.BROADCAST_SMS" android:enabled="false">
        <intent-filter android:priority="2147483647">
            <action android:name="android.provider.Telephony.SMS_RECEIVED" />
        </intent-filter>
    </receiver>