2016-03-01 20 views
0

我在我的應用程序中讀取廣播短信。如何通過我的應用程序閱讀後刪除廣播消息?

我想先檢查該消息中是否存在特定模式。如果不存在,那麼我想刪除該短信而不將其保存在收件箱文件夾中。

我能夠在我的應用程序中成功讀取短信,但無法刪除它。代碼片段如下。

public class SmsListener extends BroadcastReceiver { 
@Override 
public void onReceive(Context context, Intent intent) { 
    if (Telephony.Sms.Intents.SMS_RECEIVED_ACTION.equals(intent.getAction())) { 
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { 
      for (SmsMessage smsMessage : Telephony.Sms.Intents.getMessagesFromIntent(intent)) { 
       String messageBody = smsMessage.getMessageBody(); 
       String pattern="$Ntmds"; 
       if(messageBody.indexOf(pattern)!=-1){ 
        Log.d("sdsd,", String.valueOf(messageBody)); 
       }else { 
        //i want to delete here 
        // abortBroadcast(); <-- this is nnot working for me 
        Log.d("vb,", String.valueOf(messageBody)); 
       } 
      } 
     } 
    } 
} 
} 

AndroidManifest.xml中

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

我嘗試了很多,但沒有得到任何成功。我用abortBroadcast()但它也不適合我。請幫幫我。

+0

您正在使用哪個android版本? –

+0

我用了6.0(棉花糖)。 –

+0

你不應該使用普通的短信作爲基於此端口的短信,所以它從來沒有在一般的收件箱中看到。 –

回答

0

你不能在棉花糖上做。它僅適用於Android操作系統< = 4.3

隨着Android 4.4 KitKat(API級別19)的發佈,阻止SMS消息並阻止它傳遞到默認SMS應用程序的選項已被刪除。非默認短信應用程序可能會在收到短信時觀察到短信,但任何中止廣播的嘗試都將被Android 4.4+忽略。

如果您有一個依賴於中止SMS消息廣播的現有應用程序,那麼您可能需要考慮當用戶升級到Android 4.4+時,這種行爲變化的影響。

http://android-developers.blogspot.co.uk/2013/10/getting-your-sms-apps-ready-for-kitkat.html

+0

這意味着無法中止該短信? –

+0

不是Android 4.4 –

+0

您有兩種其他方式可以解決您的問題 請遵循Google的建議,瞭解如何在您需要執行更改時請求用戶將默認SMS應用程序切換到您的應用程序(並且一旦您完成此操作,允許用戶切換回原始的默認短信應用程序)。 或找一個臨時的方法來做你需要做的事情。作爲提示,有一個隱藏的API:AppOpsManager,您可能會利用它來爲您的應用程序提供寫入權限(OP_WRITE_SMS),然後轉到此XDA頁面以瞭解更多信息: –

相關問題