android – 广播接收器不适用于短信

首先,我已经搜索了可能的解决方案,尝试了一切,但仍然无效.我肯定错过了什么.

我正在尝试创建一个接收/读取和写入SMS的应用程序.
写部分工作正常,我的广播接收器只是没有捕捉广播.

AndroidManifest.xml中

<uses-permission android:name="android.permission.RECEIVE_SMS" />
    <uses-permission android:name="android.permission.SEND_SMS" />
    <uses-permission android:name="android.permission.WRITE_SMS" /> 
    <uses-permission android:name="android.permission.READ_SMS" /> 
...
        <receiver android:name=".SmsReceiver"
            android:permission="android.permission.broADCAST_SMS">
        <intent-filter>
            <action android:name="android.provider.Telephony.SMS_RECEIVED" />
        </intent-filter>
        </receiver>

SmsReceiver.java

public class SmsReceiver extends broadcastReceiver {

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

    Toast.makeText(context,"ON RECEIVE broADCAST",Toast.LENGTH_LONG).show();
    Log.d("ON ","RECEIVE");
     Bundle bundle = intent.getExtras();
        Object[] messages = (Object[]) bundle.get("pdus");
        SmsMessage[] sms = new SmsMessage[messages.length];
        // Create messages for each incoming PDU
        for (int n = 0; n < messages.length; n++) {
            sms[n] = SmsMessage.createFromPdu((byte[]) messages[n]);
        }
        for (SmsMessage msg : sms) {
            Log.e("RECEIVED MSG",":"+msg.getMessageBody());
            // Verify if the message came from our kNown sender

        }
}

没有触发Logs或Toast.

尝试将清单上的操作更改为android.intent.action.AIRPLANE_MODE只是为了测试声明并收到广播,这对于SMS不起作用.

更新

尝试使用不同的手机,但它确实有效.一定是因为我使用的是Handcent短信,还有一些如何阻止广播.无论哪种方式,我需要它独立于安装的应用程序在每个手机上工作.

解决方法

尝试将接收器声明如下:
<receiver android:name=".SmsReceiver" android:permission="android.permission.broADCAST_SMS" android:exported="true">
    <intent-filter android:priority="5822" >
        <action android:name="android.provider.Telephony.SMS_RECEIVED" />
    </intent-filter>
 </receiver>

这对我来说很好,我只添加一个标志来告诉这个接收器是导出的.

编辑:我忘了将优先级添加到intent过滤器.使用高数字作为优先级.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...