【发布时间】:2015-10-27 17:14:52
【问题描述】:
我正在尝试捕获手机上收到的短信,但是当手机收到短信时,不会调用“onReceive”方法。这是我的代码:
我已经在 'AndroidManifest.xml' 中的标签 'application' 中声明了 BroadcastReceiver:
<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",我试过用@987654325 @我还没有让它工作。有谁知道我是否错过了什么?
【问题讨论】:
-
是的,我已经声明了这些权限:
<uses-permission android:name="android.permission.RECEIVE_SMS" /> <uses-permission android:name="android.permission.WRITE_SMS"/> <uses-permission android:name="android.permission.READ_SMS" /> -
我有一个通过单击按钮执行的活动,在其中我尝试使用
registerReceiver
标签: android broadcastreceiver sms