我想在手机上捕获到接收到的短信,但当手机接收到短信时,方法'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
,但都没有使其正常工作。请问有人知道我是否缺少什么吗?
<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 AcostaregisterReceiver
。 - Ander Acosta