gpt4 book ai didi

Android 广播接收器不接收传入的短信

转载 作者:行者123 更新时间:2023-11-29 21:37:38 24 4
gpt4 key购买 nike

我写了一个 SMS 接收器来接收收入 SMS,一切看起来都很好,但实际上并没有工作正常,接收方没有收到 SMS 收入。这是代码和 list 内容。我记得我用 android 2.3 编写的相同应用程序工作正常,但这段代码在 android 4.x 中运行,无法正常运行。问题是什么 ?是否取决于 android 4.x 的安全问题?

list :

<receiver android:name="SmsReceiver">
<intent-filter android:priority="100">
<action android:name="android.provider.telephony.SMS_RECEIVED"/>
</intent-filter>
</receiver>

Java 代码:

 public class SmsReceiver extends BroadcastReceiver {

private static final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED";

@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
Logger.i("INCOMMING SMS...");
if (action == SMS_RECEIVED) {
Bundle bundle = intent.getExtras();
if (bundle != null) {
Object[] pdus = (Object[]) bundle.get("pdus");
final SmsMessage[] messages = new SmsMessage[pdus.length];
for (int i = 0; i < pdus.length; i++) {
messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
}
if (messages.length > -1) {
String sendr = messages[0].getOriginatingAddress();
Logger.i(sendr);
}
}
}
}


}

最佳答案

我遇到了同样的问题,我已经通过向 list 注册接收者添加另外两个操作来修复它,所以它看起来像这样:

<receiver android:name=".SmsReceiver">
<intent-filter android:priority="100">
<action android:name="android.intent.action.PHONE_STATE"/>
<action android:name="android.provider.telephony.SMS_RECEIVED"/>
<action android:name="com.your.package.android.action.broadcast"/>
</intent-filter>
</receiver>

同时添加权限:

 <uses-permission android:name="android.permission.RECEIVE_SMS" />

并且对于字符串的比较,不要使用等于运算符,而是使用等于方法。(注意。equalsIgnoreCase() 应该更适合你。)

所以它会像:

if(SMS_RECEIVED.equalsIgnoreCase(action))
{
//continue
}

希望对您有所帮助。

关于Android 广播接收器不接收传入的短信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18012953/

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