使用广播接收器重启设备后无法接收短信。 使用try catch并发现此错误“尝试获取null数组的长度”
我的接收者代码:
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.telephony.SmsMessage;
import android.util.Log;
public class ReceiveSMS extends BroadcastReceiver{
private String number;
private String text;
WorksToDo worksToDo;
@Override
public void onReceive(Context context, Intent intent) {
try {
final SmsManager sms = SmsManager.getDefault();
final Bundle bundle = intent.getExtras();
SmsMessage smsMessage;
if (bundle != null) {
Object[] objects = (Object[]) bundle.get("pdus");
for (int i = 0; i < objects.length; i++) {
smsMessage=SmsMessage.createFromPdu((byte[]) objects[i]);
number = smsMessage.getDisplayOriginatingAddress();
text = smsMessage.getDisplayMessageBody();
}
worksToDo = new WorksToDo(context, number, text);
worksToDo.DoAll();
}
}catch (Exception ex){
Log.i("Errrorrrrrrrrrr",ex.getMessage());
}
}
}
我的舱单许可和接收方:
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<receiver
android:name=".ReceiveSMS">
<intent-filter android:priority="2147483647">
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
<action android:name="android.intent.action.BOOT_COMPLETED"/>
<action android:name="android.intent.action.LOCKED_BOOT_COMPLETED"/>
</intent-filter>
</receiver>
但是当我打开我的应用程序时它工作正常,这段代码出了什么问题?
还是有其他方法可以在手机重启后接收短信吗?
系统短信应用程序是如何做到这一点的? (我的意思是设备中的默认短信应用程序)
我在Google上搜索过,但没有找到任何有用的答案来解决我的问题。
答案 0 :(得分:0)
<强>固定强>
刚刚将清单改为:
<receiver
android:name=".ReceiveSMS">
<intent-filter android:priority="2147483647">
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
<action
</intent-filter>
</receiver>
一切正常