gpt4 book ai didi

android - 无法在我的 Android 应用程序中接收短信

转载 作者:行者123 更新时间:2023-11-30 03:58:23 24 4
gpt4 key购买 nike

我正在尝试从我的 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com