0

這是我如何設置我的應用程序意圖過濾器的優先級最高。收到intent Extras後中止廣播,但本地應用程序仍然收到短信和通知欄仍然顯示最令人討厭的消息內容,因爲我不希望它顯示消息正文。有什麼我失蹤?如何以編程方式增加IntentFilter的優先級

<receiver android:name=".MySmsReceiver" > 
<intent-filter> 
     <action android:name="android.provider.Telephony.SMS_RECEIVED" 
      android:priority="999" 
      /> 
</intent-filter> 
</receiver> 

這是我的接收機onReceive()方法

public void onReceive(final Context context, Intent intent) { 

    Bundle extras = intent.getExtras(); 
    abortBroadcast(); 
      .... 
} 

回答

0

試圖聲明您的接收器以這樣的方式

<receiver android:name=".MySmsReceiver"> 
    <intent-filter android:priority="999"> 
     <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
    </intent-filter> 
</receiver> 

相反的:

<receiver android:name=".MySmsReceiver" > 
<intent-filter> 
     <action android:name="android.provider.Telephony.SMS_RECEIVED" 
      android:priority="999" 
      /> 
</intent-filter> 
</receiver> 

也可嘗試檢查以下您中止播出前NG條件:

編輯:

@Override 
public void onReceive(Context context, Intent intent) { 
    if (intent.getAction().equals(SMS_RECEIVED)) { 
     Bundle extras = intent.getExtras(); 
     if(extras != null) 
      // doBroadcast(); 
     else 
      abortBroadcast(); 
    } 
} 

希望它可以幫助你。

謝謝。

+0

你可以像上面提到的那樣使用這個條件if(intent.getAction()。equals(SMS_RECEIVED))'這個只會偵聽名爲'SMS_RECEIVED'的指定接收者。 –

+0

我只想從意圖檢索數據,然後中止廣播..但我現在正在做什麼這種情況下,本機應用程序也獲取意圖,然後我中止廣播和'通知欄'再次顯示內容..有沒有與'orderbroadcast'有任何時間間隔,我需要照顧? – aneela

+0

@aneelasafdar查看我發佈的編輯解決方案。希望解決你的問題。 –