我尝试读取发送给用户的传入短信。 我在互联网上看到了很多答案,但我无法让它发挥作用。
这是我的权限和接收者的清单:
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.READ_SMS" />
<application>
...
<receiver android:name=".notifications.receiver.SmsCodeReader"
android:permission="android.permission.BROADCAST_SMS"
android:exported="true">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
</application>
这是我的Receiver课程:
public class SmsCodeReader extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "received something", Toast.LENGTH_SHORT).show();
}
}
我正在使用API 22,因此不需要运行时权限,但无论我尝试什么,我都无法让Receiver工作。 我没有在日志中得到任何异常或错误
编辑: 如果我像这样发送带有意图的广播:
Intent in = new Intent("android.provider.Telephony.SMS_RECEIVED");
sendBroadcast(in);
我可以看到吐司。所以这意味着广播在清单中正确注册。 那么,为什么它不适用于真正的短信?
感谢所有