2013-01-24 39 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没问题:-) –