我正在尝试从我的 android 应用程序中的特定号码接收短信,并尝试在我的应用程序中显示消息内容。但是我收不到短信。
下面给出了我用来接收的类。
public class SmsReceiver extends BroadcastReceiver {
StringBuilder sb;
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction()
.equals("android.provider.Telephony.SMS_RECEIVED")) {
Bundle extras = intent.getExtras();
if (extras != null) {
Object[] pdus = (Object[]) extras.get("pdus");
if (pdus.length < 1)
return; // Invalid SMS. Not sure that it's possible.
sb = new StringBuilder();
String sender = null;
for (int i = 0; i < pdus.length; i++) {
SmsMessage message = SmsMessage
.createFromPdu((byte[]) pdus[i]);
if (sender == null)
sender = message.getOriginatingAddress();
String text = message.getMessageBody();
if (text != null)
sb.append(text);
}
if (sender != null && sender.equals("********")) {
// Process our sms...
Intent broadcastIntent = new Intent();
broadcastIntent.setAction("SMS");
broadcastIntent.putExtra("data", sb.toString());
context.sendOrderedBroadcast(broadcastIntent, null);
System.out.println("MESSAGE FROM SERVER -->"
+ sb.toString());
this.abortBroadcast();
}
return;
}
}
}
}
收到短信后,我会检查发件人,如果是我要找的发件人,我会再发送一 strip 有短信的广播。我将在那里展示内容。
查看我的 list
<receiver android:name=".SmsReceiver" >
<intent-filter android:priority="2147483647" >
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
<action android:name="SMS" />
</intent-filter>
</receiver>
我找不到解决方案,请帮忙。
最佳答案
要检查的事项(根据我的经验):
android:priority="2147483647"
无效,最大值为1000
。大于此的数字将被忽略- 将您的
this.abortBroadcast();
插入for
循环(被调用pdus.length
次) - 如果发送的短信符合您的标准,为了测试,将其保存在您的应用程序首选项中,并在您的主要 Activity 中读取您首选项中的值,如果有效,则问题出在您的
broadcastIntent
.
关于android - 无法在我的 Android 应用程序中接收短信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12968504/