【发布时间】:2014-07-11 19:56:58
【问题描述】:
试图让一个非常简单的 SMS 广播接收器在我的 KitKat 手机上工作,但没有任何效果。让我有点发疯。除了阅读短信我不需要做任何事情,所以我认为 KitKat 中的重大短信更改不会影响我。我已经阅读了很多帖子,尝试了一切。
根据我的阅读,我应该只需要 SMS_DELIVER_ACTION 对文本进行简单的嗅探。我已将 READ_SMS 和 RECEIVE_SMS 放入清单权限中。一开始我只用了 JUST READ_SMS。我假设接收首先将其提供给应用程序,可能是被奇巧“默认”短信行为短路。顺便说一句,我所做的一切都不会让我的应用程序显示在默认的短信系统设置中。
我有一个非常简单的应用程序,它有 1 个活动、1 个广播接收器类,并且已在清单中注册。在 onReceive 中,我正在尝试写入 LogCat 并在收到文本时显示祝酒词。没有任何东西会命中该代码。
这是我的清单:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.smoftware.smsreceivertest.app" >
<uses-permission android:name="android.permission.READ_SMS"/>
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver
android:name=".SMSReceiver"
android:permission="android.permission.BROADCAST_SMS">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_DELIVER_ACTION"/>
</intent-filter>
</receiver>
</application>
</manifest>
还有我的广播接收器...
public class SMSReceiver extends BroadcastReceiver {
public SMSReceiver() {
}
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context,"in onReceive of SMSReceiver",Toast.LENGTH_LONG).show();
Log.d("SMSReceiver", "In body of onReceive method");
}
}
我有一个主要活动,但它只是一个 helloworld 模板。我确保拥有这个,因为我已经阅读了 3.1 的更改,如果尚未启动,广播接收器将无法运行。
在调试中运行应该没有任何问题,不是吗?即便如此,我已经停止了该应用程序并重新启动,以便手动打开它。
谢谢!
【问题讨论】:
-
将
<intent-filter>操作更改为"android.provider.Telephony.SMS_RECEIVED"。
标签: android broadcastreceiver android-4.4-kitkat