0

サービスクラス

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

public class StartActivityAtBoot extends BroadcastReceiver{

@Override
public void onReceive(Context context, Intent intent) {
    if ("android.intent.action.BOOT_COMPLETED".equals(intent.getAction())) {
        Intent i = new Intent(context, CompareIMSI.class);
        context.startService(i);
    }
}

比較 SIM カード IMSI クラス

public class CompareIMSI extends Service{

Context context;
TelephonyManager operator;

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

@Override
public void onCreate() {
    super.onCreate();
    Toast.makeText(this, "Service Created", Toast.LENGTH_LONG).show();
    compareSIM();
}

@Override
public void onDestroy() {
    super.onDestroy();
    Toast.makeText(this, "Service Destroyed", Toast.LENGTH_LONG).show();
}

@Override
public void onStart(Intent intent, int startId) {
    super.onStart(intent, startId);
    Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show();
}

public void compareSIM(){

    final String STORAGE = "Storage";
    SharedPreferences unique = getSharedPreferences(STORAGE, 0);
    final String storedIMSI = unique.getString("simIMSI", "");
    final String currentIMSI = getSubscriberId().toString();

    if (!storedIMSI.equals(currentIMSI)){
        Intent i = new Intent(CompareIMSI.this, ScreenLockActivity.class);
        startActivity(i);
    }
}

public String getSubscriberId(){

    String IMSI = null;
    String serviceName = Context.TELEPHONY_SERVICE;
    TelephonyManager m_telephonyManager = (TelephonyManager) getSystemService(serviceName);
    int deviceType = m_telephonyManager.getPhoneType();
    switch (deviceType) {
        case (TelephonyManager.PHONE_TYPE_GSM):
            break;
        case (TelephonyManager.PHONE_TYPE_CDMA):
            break;
        case (TelephonyManager.PHONE_TYPE_NONE):
            break;
        default:
            break;
     }
     IMSI = m_telephonyManager.getDeviceId();
     return IMSI;
}
}    

保存されている SIM カードの IMSI と現在挿入されている IMSI を起動時にアプリで比較できるようにしたいのですが、IMSI が異なる場合、アプリは起動後にユーザーを別のアクティビティに誘導します...私のコーディングの何が問題になっていますか?

4

2 に答える 2

0

IMSIを比較しているのではなく、IMEI(電話のIDであり、変更されることはありません)を比較しています。

IMSIを取得するには、次のものが必要です。

IMSI = m_telephonyManager.getSubscriberId();
于 2012-05-21T09:55:57.363 に答える
0

はい、getSubscriberId()正しい方法です。ちなみに、boot_completed ブロードキャストを受信した場合、通常、「imsi」は使用できません。

于 2013-03-22T03:27:43.737 に答える