尝试在我的KitKat手机上安装一个非常简单的SMS广播接收器,但没有任何工作。让我有点疯狂。除了阅读短信,我不需要做任何事情,所以我认为KitKat中的大短信变化不会影响我。我读了很多帖子,尝试了一切。
根据我的阅读,我应该只需要SMS_DELIVER_ACTION来对文本进行简单的嗅探。我把READ_SMS和RECEIVE_SMS放在了清单权限中。我一开始就使用JUST READ_SMS。我假设接收首先将它提供给应用程序,可能是由KitKat“默认”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变化,如果尚未启动广播接收器,它将继续运行。
在调试中运行应该没有任何问题,是吗?即便如此,我已经停止了应用程序并重新启动,以便手动打开它。
谢谢!
答案 0 :(得分:0)
将接收者的IntentFilter
设置为:
<receiver android:name=".SMSReceiver">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
以下权限:
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
<uses-permission android:name="android.permission.READ_SMS"/>