2014-02-25 1 views
0

내 안드로이드 앱은 메시지를 받으면 먼저 토스트를 표시하고 특정 번호의 메시지를 받으면 다른 토스트를 보여줍니다. 그러나 그것은 두 번째 축배를 표시하지 않습니다. 당신은 잘못된 방법으로 if(senderNum == serverNumber)을 비교하는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

:

여기 내 코드입니다. 자바에서 & 안드로이드 ==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.equals(serverNumber)){ 
    Toast toast1 = Toast.makeText(context,"alert message received!!!!",Toast.LENGTH_LONG); 
    toast1.show(); 
} 

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

을 비교해야합니다.

또한, 두 문자열을 비교하는 적절한 방법은 다음과 같다 :

senderNum.equals(serverNumber) 

== 연산자를 사용하여, 당신이 String 객체에 대한 참조를 비교하고, 그래서 많은 가능성이 false를 반환합니다.

관련 문제