无法在KitKat中阅读短信,非常困惑

时间:2014-07-11 19:56:59

标签: android broadcastreceiver android-4.4-kitkat

尝试在我的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变化,如果尚未启动广播接收器,它将继续运行。

在调试中运行应该没有任何问题,是吗?即便如此,我已经停止了应用程序并重新启动,以便手动打开它。

谢谢!

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"/>