2010-09-20 70 views
3

我想覆蓋默認的android消息傳遞應用程序。 如果我收到短信或彩信,我希望將其發送給電子郵件,但我不想在電話上發送任何通知。 所以基本上我想更換默認的消息應用程序。覆蓋默認的android消息傳遞應用程序

如何讓我的應用程序成爲接收短信​​的默認應用程序?


非常感謝。這正是我需要的。但我還有一個問題。 我使用接收器來獲取消息......但我不知道如何在手機中查找消息並將其標記爲已讀。

public void onReceive(Context context, Intent intent) { 
    // TODO Auto-generated method stub 
    //---get the SMS message passed in--- 
    Bundle bundle = intent.getExtras();   
    SmsMessage[] msgs = null; 
    String str = "";    
    if (bundle != null) 
    { 
     //---retrieve the SMS message received--- 
     Object[] pdus = (Object[]) bundle.get("pdus"); 
     msgs = new SmsMessage[pdus.length];    
     for (int i=0; i<msgs.length; i++){ 
      msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);     
      str += "SMS from " + msgs[i].getOriginatingAddress();      
      str += " :"; 
      str += msgs[i].getMessageBody().toString(); 
      str += "\n";   
     } 
     //---display the new SMS message--- 
     Toast.makeText(context, str, Toast.LENGTH_SHORT).show(); 

     //---find and mark the messages as read--- 
     Uri uriSms = Uri.parse("content://sms/inbox/"); 
     try{ 
     Cursor c = context.getContentResolver().query(uriSms, null,null,null,null); 
      //---code to find the message by body and sender--- 
      ... 

    } 

有沒有什麼方法可以識別消息就像一個ID? 現在我發現郵件比較收件箱中所有郵件的bofy和發件人號碼。

感謝, 拉杜

回答

8

沒有在你的思維方式的「默認應用程序」。應用程序在Android中分派的方式是通過Intents。應用程序將使用IntentFilter來確定它可以處理特定類型的Intents。您正在尋找的是可以處理SMSReceived意圖的BroadcastReceiver。這將允許您的應用程序在收到SMS時收到通知。爲了隱藏通知,您需要使用SMS ContentProvider將短信標記爲已讀。這將清除通知托盤中的通知。除非您從SMS中刪除郵件ContentProvider,否則無法隱藏默認郵件應用程序的郵件。查看this link以瞭解如何開始使用BroadcastReceivers

+0

鏈接不再可用... – 2012-04-26 17:27:26

+0

@MartinBories感謝您的支持!我用一個正在工作的人取而代之。 – 2012-04-27 13:42:47

0

有一種方法可以阻止消息進入默認消息應用程序。如果您將BroadcastReceiver的優先級設置得足夠高(我們使用100),並調用abortBroadcast來阻止任何優先級較低的BroadcastReceivers獲取目標。它只有在意圖廣播被訂購時纔有效,這是我們無法控制的。但事實證明,SMS_SENT廣播是有序的,我懷疑MMS_SENT廣播也是如此。

0

如果您發送的BroadcastReceiver的優先級已經足夠高,那麼您的應用程序是第一個接收到該消息的消息,之前消息存儲在數據庫中。 我想解決的辦法是將消息存儲在數據庫中,並致電abortBroadcast();,但我沒有自己嘗試。

祝你好運!

相關問題