首先,我已经搜索了可能的解决方案,尝试了所有方法,但仍然无效。我肯定错过了什么。
我正在尝试创建一个接收/读取和写入 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>
短信接收器.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
}
}
没有任何日志或敬酒被解雇。
尝试将清单上的操作更改为android.intent.action.AIRPLANE_MODE
仅测试声明并接收到广播,但这对 SMS 不起作用。
更新
用另一部手机试了下,效果不错。一定是因为我使用的是 Handcent SMS,以及它如何阻止广播。无论哪种方式,我都需要它独立于安装的应用程序在每部手机上工作。