2014-07-11 53 views
0

試圖獲得一個非常簡單的SMS廣播接收器在我的KitKat手機上工作,但沒有任何工作。讓我有點瘋狂。我不需要做任何事情,只需閱讀短信,所以我不認爲KitKat中的大型短信變化會影響我。我讀過很多帖子,嘗試了一切。無法在KitKat中讀取短信,非常困惑

從我讀過的東西我應該只需要SMS_DELIVER_ACTION做一個簡單的文本嗅探。我已將READ_SMS和RECEIVE_SMS置於清單權限中。我剛開始時只用READ_SMS。我假設接收首先給它的應用程序,可能是由KitKat「默認」短信行爲短路。順便說一句,我已經做的任何事情都不會讓我的應用程序顯示在默認的短信系統設置。

我有一個令人難以置信的簡單的應用程序,它有1個活動,1個broadcastreceiver類,它在清單中註冊。在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

更改'<意圖過濾器>'行動' 「android.provider.Telephony.SMS_RECEIVED」'。 –

回答

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

太棒了,謝謝!我以爲我曾經以某種方式設置了這種方式,但我想不是。我剛剛刪除了RECEIVE_SMS權限作爲測試,它不起作用。但只有RECEIVE_SMS是。 android文檔說RECEIVE_SMS允許監視傳入的SMS。所以至少對於我的測試,只是寫入調試並顯示吐司,我只需要RECEIVE_SMS。涼。 – JustSomeGuy