2015-10-27 96 views
4

我試圖捕獲手機上收到的短信,但是當手機收到短信時,方法'onReceive'未被調用。這是我的代碼:短信廣播接收器不在Android 6上調用

我有廣播接收器在 'AndroidManifest.xml中' 聲明的標籤 '應用' 裏面:

<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)) { 
      ... 
     } 
    } 
} 

我正在模擬器谷歌Nexus 5與Android 6的測試。當我在模擬器中發送一個短信(假)通知顯示好像它接收得很好,我可以使用它在帶模擬器的默認應用程序中。在Android Studio的logcat中沒有出現,你已經運行了方法onReceive,或代碼寫在裏面。我試圖改變優先級,我試過使用android:enabled="true",我試過使用registerReceiver,我還沒有得到它工作。有誰知道我錯過了什麼?

+1

是的,我已經把這些權限: '<使用許可權的android:NAME = 「android.permission.RECEIVE_SMS」/> <使用許可權的android:NAME =「android.permission.WRITE_SMS 「/> <使用權限的android:name =」android.permission.READ_SMS「/>' –

+0

我有一個活動,通過點擊一個按鈕執行,並在其中我嘗試使用'registerReceiver' –

回答

4

您是否在使用「禁用其他應用」標誌的默認消息應用?

請看到這一點:

"android.provider.Telephony.SMS_RECEIVED" not working on my device (HTC Wildfire) - how to debug?

編輯:

由於您使用的是Android 6,您應該使用新的權限模型。檢查了這一點: http://developer.android.com/training/permissions/requesting.html

+0

我已閱讀那種迴應,但不是我認爲這是我的情況。我使用乾淨的模擬器,只安裝了我的應用程序,其他的東西都來自工廠。 –

+0

@AnderAcosta編輯我的答案,請再次檢查 –

+0

作品!謝謝!我要編輯我的問題的標題。 –

相關問題