2013-01-24 35 views
0

我參考LogCat時發生錯誤。我已經存儲了存儲卡(第1張),並與當前SIM卡(第2張)進行比較,如果SIM卡序列不同,logcat會打印出SIM卡已更改。但是當我運行它時,我的服務出現問題。下面是我的代碼顯示Android Sim更改檢測,Log.e中的錯誤。

Tag SimSerial::   8944110065486249080 
Tag Current Sim Serial:: 8944110065486249080 
Tag Sim Status    Sim no changed !!! 

Tag SimSerial::   8944110065486249080 
Tag Current Sim Serial:: 8944110065486249080 
Tag Sim Status    Sim changed !!! 

第一部分

logcat的是正確的,但第二部分SIM狀態不應該「辛不改變」的可能。 有誰知道錯誤在哪裏?

BootCompleteReceiver

public class BootCompleteReceiver extends BroadcastReceiver { 

    Context context; 
    SharedPreferences settings; 
    public static final String PREFS_NAME = "MyPrefsFile"; 

    @Override 
    public void onReceive(Context context, Intent intent) { 

     Intent service = new Intent(context, MyService.class); 
     context.startService(service); 

    } 

} 

爲MyService

public class MyService extends Service { 

    String storedSimSerial; 
    String currentSimSerial; 

    @Override 
    public void onCreate() { 
     super.onCreate();  
    } 

    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 

     Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show(); 

     TelephonyManager telephoneMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); 
     storedSimSerial = telephoneMgr.getSimSerialNumber(); 
     Log.e("SimSerial::",storedSimSerial); 

     TelephonyManager tmMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); 
     currentSimSerial = tmMgr.getSimSerialNumber(); 
     Log.e("Current Sim Serial::",currentSimSerial); 

     if(currentSimSerial==storedSimSerial) 
     { 
      Log.e("Sim Status","Sim no changed !!!"); 
     }    
     else 
      Log.e("Sim Status","Sim changed !!!"); 

     return Service.START_STICKY; 
    } 

    @Override 
    public void onDestroy() { 

     super.onDestroy(); 
     Toast.makeText(this, "Service Destroy", Toast.LENGTH_LONG).show(); 
    } 

    @Override 
    public IBinder onBind(Intent arg0) { 
     return null; 
    } 
} 

回答

1

撰寫您if這樣的:

if(currentSimSerial.equals(storedSimSerial)) 
    { 
     Log.e("Sim Status","Sim no changed !!!"); 
    }    
    else 
     Log.e("Sim Status","Sim changed !!!"); 

當您使用==你比較對象引用,而不是對Strings很少起作用的內容。

+1

謝謝。它解決了!不能相信這樣一個小小的錯誤浪費了我一小時才找到答案。 – BangBoat

+0

@BangBoat沒問題:-) –