Pms*_*msc 6 android broadcastreceiver
首先,我已经搜索了可能的解决方案,尝试了一切,但仍然无效.我肯定错过了什么.
我正在尝试创建一个接收/读取和写入SMS的应用程序.写部分工作正常,我的广播接收器只是没有捕捉广播.
<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>
Run Code Online (Sandbox Code Playgroud)
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
}
}
Run Code Online (Sandbox Code Playgroud)
没有触发Logs或Toast.
尝试改变清单上的动作android.intent.action.AIRPLANE_MODE只是为了测试声明并收到广播,这对SMS来说是不起作用的.
尝试使用不同的手机,但它确实有效.一定是因为我使用的是Handcent短信,还有一些如何阻止广播.无论哪种方式,我需要它独立于安装的应用程序在每个手机上工作.
找到了一个可以回答我疑问的主题:Suppress / Block BroadcastReceiver in another app。
即使将优先级设置为最大可能 (999),如果另一个应用程序具有相同的优先级,在这种情况下是 Handcent SMS 应用程序,第一个接收广播的应用程序是用户首先安装的应用程序。
在我的例子中是 Handcent SMS,因为它在收到广播时中止了广播,所以我的应用程序没有收到任何消息。
小智 5
尝试声明您的接收者,如下所示:
<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>
Run Code Online (Sandbox Code Playgroud)
这对我来说很好,我只加了一个标志告诉我receiver is exported。
编辑: 我忘记将优先级添加到意图过滤器。使用高数字优先。
| 归档时间: |
|
| 查看次数: |
16052 次 |
| 最近记录: |