[嗨,我正在尝试捕获短信内容并在我的应用中使用它,因此我制作了具有权限和清单的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);
有人知道问题出在哪里吗?应该只是吐司,收到一条消息,这样我就可以继续工作,但接收者似乎都不会开火
我自己找到了。这是有效的代码!它必须包含这样做的SMS_DELIVER_ACTION。 (许多github上没有!)
您应该请求运行时权限才能接收SMS(Android 6.0及更高版本)。