2012-12-10 27 views
0

我寫了發送和接收程序在Android中。當短信從特殊號碼收到時,短信會進入我的節目和短信主體,以文本形式顯示。但對於從其他電話號碼收到短信,短信到手機的收件箱和程序未打開。 現在在我的程序中,對於每個收到的短信,程序打開,短信主體顯示在textview中。如果條件不起作用,則爲 ! 我把我的代碼,請檢查我的代碼。 SmsReceiver.java收到來自特殊號碼的短信去我的程序和其他收到的短信去手機的收件箱

import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.os.Bundle; 
import android.telephony.SmsMessage; 
public class SmsReceiver extends BroadcastReceiver { 
    public String str = ""; 
    static final String ACTION = 
      "android.provider.Telephony.SMS_RECEIVED"; 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     if (intent.getAction().equals(ACTION)) {  
     Bundle bundle = intent.getExtras(); 
     SmsMessage[] msgs = null; 
     if (bundle != null) {     
      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]);    
       String msg_from = msgs[i].getOriginatingAddress();  
       if(msg_from.equals("+9891--------")) 
       { 
       str += "SMS from " + msgs[i].getOriginatingAddress(); 
       str += " :"; 
       str += msgs[i].getMessageBody().toString(); 
       str += "\n"; 
       } 
      } 
      Intent act = new Intent(context, MainActivity.class); 
      act.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      act.putExtra("message", str); 
      context.startActivity(act); 
      } 
     abortBroadcast(); 
     } 
    } 
} 

回答

1

你應該在if條件做context.startActivity(act);。我認爲你錯誤地把它放出了條件。 另外,abortBroadcast()應該是,如果條件堂妹是有道理的,如果MSG不是來自特殊號碼就應該到收件箱....吧:)

編輯:

public void onReceive(Context context, Intent intent) { 
    if (intent.getAction().equals(ACTION)) { 
     Bundle bundle = intent.getExtras(); 
     SmsMessage[] msgs = null; 
     if (bundle != null) { 
      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]); 
       String msg_from = msgs[i].getOriginatingAddress(); 
       if (msg_from.equals("+9891--------")) { 
        String str = "SMS from " + msgs[i].getOriginatingAddress(); 
        str += " :"; 
        str += msgs[i].getMessageBody().toString(); 
        str += "\n"; 
        Intent act = new Intent(context, MainActivity.class); 
        act.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
        act.putExtra("message", str); 
        context.startActivity(act); 
        abortBroadcast(); 
       } 
      } 

     } 

    } 
} 
+0

請給我正確的如果條件。 –

+0

@userUser編輯 – Faizan