Android 6上未调用短信广播接收器

4

我想在手机上捕获到接收到的短信,但当手机接收到短信时,方法'onReceive'并没有被调用。这是我的代码:

我已经在'AndroidManifest.xml'中标记为'receiver',并添加到了'application'标签中:

    <receiver android:name=".util.IncomingSmsReceiver"
        android:exported="true">
        <intent-filter android:priority="2147483647">
            <action android:name="android.provider.Telephony.SMS_RECEIVED" />
        </intent-filter>
    </receiver>

这是IncomingSmsReceiver.java文件

public class IncomingSmsReceiver extends BroadcastReceiver {

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

    @Override
    public void onReceive(Context context, Intent intent) {

        Log.i(TAG, "onReceive executed");
        if (intent.getAction().equals(SMS_RECEIVED)) {
           ...
        }
   }
}

我正在使用 Android 6 模拟器 Google Nexus 5 进行测试。当我发送一条短信(虚假的)到模拟器时,通知会出现,就好像它确实被接收了,并且我可以在模拟器自带的默认应用程序中使用它。但是,在 Android Studio 的 logcat 中,并没有出现运行 onReceive 方法或写在其中的代码的记录。我尝试过更改优先级、使用 android:enabled="true"、使用 registerReceiver,但都没有使其正常工作。请问有人知道我是否缺少什么吗?

1
是的,我已经声明了这些权限:     <uses-permission android:name="android.permission.RECEIVE_SMS" />     <uses-permission android:name="android.permission.WRITE_SMS"/>     <uses-permission android:name="android.permission.READ_SMS" /> - Ander Acosta
我有一个通过点击按钮执行的活动,在其中我尝试使用registerReceiver - Ander Acosta
1个回答

4

我已经阅读了那个回复,但我认为那不是我的情况。我使用一个干净的模拟器,只安装了我的应用程序,其他所有内容都来自工厂。 - Ander Acosta
@AnderAcosta 已编辑我的答案,请再次检查。 - Ankur Aggarwal
可以了!谢谢!我要编辑我的问题标题。 - Ander Acosta
@AnderAcosta 很高兴能够帮助!由于问题似乎已经解决,您可能想要通过单击左侧答案旁边的勾号(✓)图标来标记一个答案为已接受。这样做将标记问题已回答,并且还将授予您和我一些声望点数。 - Ankur Aggarwal
兄弟,你救了我的命...我有小米Mi 5设备,但就是无法让我的BroadcastReceiver在接收我从同一设备发送的短信时工作。阅读了你的帖子后,我去了设备的主要消息应用程序设置,并禁用了“Mi Message”选项。原来它可以启用通过Wi-Fi向其他Mi设备发送消息,因此当我向自己发送消息时,它们通过Wi-Fi传输,我相信这就是导致我的BroadcastReceiver无法工作的原因。 - Salivan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接