Android SMS广播接收器不起作用

问题描述 投票:2回答:3

[嗨,我正在尝试捕获短信内容并在我的应用中使用它,因此我制作了具有权限和清单的BroadcastReceiver,但是当设备收到短信时,我的代码无法运行,这意味着BroadcastReceiver不会触发。我还在这里检查了很多内部和外部的文章,有一些:

Android Sms Receiver Result to Main ActivitySMS receiver didn't work

Android SMS Receiver not working

Broadcast Receiver not working for SMS

这是我的清单的一部分:

<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.READ_SMS" />
<application.
...
...
<receiver android:name="com.example.android.receiver.SmsReceiver"
            android:permission="android.permission.BROADCAST_SMS">
            <intent-filter android:priority="2147483647">
                <action android:name="android.provider.Telephony.SMS_RECEIVED" />
            </intent-filter>
        </receiver>
</application>

这是我的接收者

public class SmsReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context, "SMS Received!", Toast.LENGTH_LONG).show();
    }
}

我还尝试在活动onCreate()中动态注册接收者,但未做任何更改

IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("android.provider.Telephony.SMS_RECEIVED");
intentFilter.setPriority(2147483647);
registerReceiver(new SmsReceiver(), intentFilter);

有人知道问题出在哪里吗?应该只是吐司,收到一条消息,这样我就可以继续工作,但接收者似乎都不会开火

java android broadcastreceiver sms intentfilter
3个回答
1
投票

您应该阅读Automatic SMS Verification


0
投票

我自己找到了。这是有效的代码!它必须包含这样做的SMS_DELIVER_ACTION。 (许多github上没有!)


0
投票

您应该请求运行时权限才能接收SMS(Android 6.0及更高版本)。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.