2014-02-25 14 views
0

我的android應用程序首先顯示提示信息,當收到消息時,以及從特定號碼收到消息時,顯示另一個提醒。但它沒有顯示第二個祝酒。安卓應用程序在比較電話號碼後無法完成任務

這裏是我的代碼:

import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.os.Bundle; 
import android.telephony.SmsManager; 
import android.telephony.SmsMessage; 
import android.util.Log; 
import android.widget.Toast; 


public class IncomingSms extends BroadcastReceiver { 

    // Get the object of SmsManager 
    final SmsManager sms = SmsManager.getDefault(); 

    public void onReceive(Context context, Intent intent) { 

     // Retrieves a map of extended data from the intent. 
     final Bundle bundle = intent.getExtras(); 

     try { 

      if (bundle != null) { 

       final Object[] pdusObj = (Object[]) bundle.get("pdus"); 

       for (int i = 0; i < pdusObj.length; i++) { 

        SmsMessage currentMessage = SmsMessage.createFromPdu((byte[]) pdusObj[i]); 
        String phoneNumber = currentMessage.getDisplayOriginatingAddress(); 

        String senderNum = phoneNumber; 
        String message = currentMessage.getDisplayMessageBody(); 

        Log.i("SmsReceiver", "senderNum: "+ senderNum + "; message: " + message); 

        int duration = Toast.LENGTH_SHORT; 
        Toast toast = Toast.makeText(context, "senderNum: "+ senderNum + ", message: " + message, duration); 
        toast.show(); 
        String serverNumber= "+919886096376"; 
        if(senderNum == serverNumber) 
        { 
         Toast toast1 = Toast.makeText(context,"alert message received!!!!",Toast.LENGTH_LONG); 
         toast.show(); 
        } 

       } // end for loop 
       } // bundle is null 

     } catch (Exception e) { 
      Log.e("SmsReceiver", "Exception smsReceiver" +e); 

     } 
    } 



} 

回答

3

你在錯誤的方式比較if(senderNum == serverNumber)。在Java & Android ==用於比較objects而不是字符串。當你想比較兩個字符串時,你需要使用.equals()方法。

你需要比較類似下面,

if(senderNum.equals(serverNumber)) 
{ 
     Toast toast1 = Toast.makeText(context,"alert message received!!!!",Toast.LENGTH_LONG); 
     toast1.show();  // change this to toast1 
} 
+0

@Varshini,你試過這個解決方案嗎? – Kedarnath

+0

我做了,它的工作原理!謝謝! –

+0

@varshinijagannath好聽的。沒關係。你可以接受我的答案:),除了我的答案之外,請打勾綠色標記。 – Kedarnath

1

更改此

if(senderNum == serverNumber){ 
    Toast toast1 = Toast.makeText(context,"alert message received!!!!",Toast.LENGTH_LONG); 
    toast.show(); 
} 

這個

if(senderNum.equals(serverNumber)){ 
    Toast toast1 = Toast.makeText(context,"alert message received!!!!",Toast.LENGTH_LONG); 
    toast1.show(); 
} 

你是不是調用正確的敬酒演出。

另外,比較兩個字符串的正確方法如下:

senderNum.equals(serverNumber) 

通過使用==運營商,你是比較引用String對象,所以它會多可能返回false。

相關問題