Android的短信广播监听器不工作 [英] Android Sms Broadcast Listener not working
问题描述
连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屋!