Android的短信广播监听器不工作 [英] Android Sms Broadcast Listener not working

查看:243
本文介绍了Android的短信广播监听器不工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

连Log.d不被调用。找不到错误。我已经看过 Android的 - 短信广播接收机,的 Android的 - 侦听传入短信的。我一直在寻找为过去24个小时左右的解决方案。请参阅并告诉我在哪里错了。

没有抛出异常。 SmsListener 是我的包文件夹中,所有其他活动都放在

更新添加的android:启用=真正的来接收。然后也没有奏效。

我在清单:

 <使用许可权的android:NAME =android.permission.READ_SMS/>
<使用许可权的android:NAME =android.permission.WRITE_SMS/>
<使用许可权的android:NAME =android.permission.RECEIVE_SMS/><接收机器人:名字=机器人SmsListener:出口=假>
     <意向过滤器的android:优先=2147483647>
         <作用机器人:名字=android.provider.Telephony.SMS_RECEIVED/>
     &所述; /意图滤光器>
< /接收器>

SmsListener.Java code:

 公共类SmsListener扩展广播接收器{@覆盖
公共无效的onReceive(上下文的背景下,意图意图){    Log.d(MainActivity.TAG,
            在接收机intent.getAction():+ intent.getAction());    如果(intent.getAction()
            .equals(android.provider.Telephony.SMS_RECEIVED)){
        捆绑包= intent.getExtras(); // ---获取短信传递
                                            //在---
        SmsMessage []封邮件= NULL;
        串msg_from;
        如果(捆绑!= NULL){
            // ---检索收到的短信---
            尝试{
                [对象]的PDU =(对象[])bundle.get(的PDU);
                封邮件=新SmsMessage [pdus.length]
                的for(int i = 0; I< msgs.length;我++){
                    封邮件[I] = SmsMessage.createFromPdu((字节[])的PDU [I]);
                    msg_from =封邮件[I] .getOriginatingAddress();
                    字符串msgBody =封邮件[I] .getMessageBody();
                    NotifyMe(背景下,msg_from,msgBody);
                }
            }赶上(例外五){
                // Log.d(捕获到异常,e.getMessage());
            }
        }
    }
}
私人无效NotifyMe(上下文的背景下,字符串msg_from,字符串msgBody){
     // 做一点事
}
}


解决方案

现在的问题解决了。改进的接收器清单以

 <接收机器人:名字=。SmsListener>
        <意向过滤器的android:优先=999>
            <作用机器人:名字=android.provider.Telephony.SMS_RECEIVED/>
        &所述; /意图滤光器>
< /接收器>

这为我工作。希望有人获得此受益。感谢大家的帮助。

Even the Log.d is not being called. Can't find the error. I have looked at Android - SMS Broadcast receiver, Android – Listen For Incoming SMS Messages. I have been looking for the solution for last 24 hours or so. Please see and tell where I am wrong.

No exceptions are thrown. SmsListener is in my package folder, where all other activities are placed.

Update added android:enabled="true" to receiver. Then also not worked.

I have in my manifest:

<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.WRITE_SMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />

<receiver android:name=".SmsListener" android:exported="false">
     <intent-filter android:priority="2147483647">
         <action android:name="android.provider.Telephony.SMS_RECEIVED" />
     </intent-filter>
</receiver>

SmsListener.Java Code:

public class SmsListener extends BroadcastReceiver {

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

    Log.d(MainActivity.TAG,
            "in Receiver. intent.getAction():" + intent.getAction());

    if (intent.getAction()
            .equals("android.provider.Telephony.SMS_RECEIVED")) {
        Bundle bundle = intent.getExtras(); // ---get the SMS message passed
                                            // in---
        SmsMessage[] msgs = null;
        String msg_from;
        if (bundle != null) {
            // ---retrieve the SMS message received---
            try {
                Object[] pdus = (Object[]) bundle.get("pdus");
                msgs = new SmsMessage[pdus.length];
                for (int i = 0; i < msgs.length; i++) {
                    msgs[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
                    msg_from = msgs[i].getOriginatingAddress();
                    String msgBody = msgs[i].getMessageBody();
                    NotifyMe(context, msg_from, msgBody);
                }
            } catch (Exception e) {
                // Log.d("Exception caught",e.getMessage());
            }
        }
    }
}
private void NotifyMe(Context context, String msg_from, String msgBody) {
     // do something
}
}

解决方案

The problem is now solved. Modified receiver in manifest to

<receiver android:name=".SmsListener" >
        <intent-filter android:priority="999" >
            <action android:name="android.provider.Telephony.SMS_RECEIVED" />
        </intent-filter>
</receiver>

It works for me. Hope someone gets benefited by this. Thanks everyone for the help.

这篇关于Android的短信广播监听器不工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆