在启动时比较SIM卡IMSI

时间:2012-05-21 09:45:35

标签: android broadcastreceiver

服务类

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不同,那么应用程序将在启动后将用户带到另一个活动...我的编码有什么问题?

2 个答案:

答案 0 :(得分:0)

您没有比较IMSI,您正在比较IMEI(这是手机的ID,它永远不会改变)。

获取所需的IMSI:

IMSI = m_telephonyManager.getSubscriberId();

答案 1 :(得分:0)

是的,getSubscriberId()是正确的方法,顺便说一下,当你收到boot_completed广播时,“imsi”通常是不可用的。