0

LogCat を参照するとエラーが発生します。storedsimcard(1st) を保存し、currentsimcard(2nd) と比較します。sim シリアルが異なる場合、logcat は sim changed を出力します。しかし、サービスを実行すると問題が発生しました。以下は私のコードです

LogCat 表示中

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 !!!

最初の部分は正しいですが、2 番目の部分の Sim Status も「Sim no changed」であってはなりません。誰がエラーがどこにあるか知っていますか?

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);   

    }  

}

マイサービス

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;  
    }  
} 
4

1 に答える 1

1

このように書いてくださいif

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

使用するときは==、文字列ではめったに機能しないコンテンツではなく、オブジェクト参照を比較します。

于 2013-01-24T00:22:32.047 に答える