我想每次android设备启动时检查SIM状态

时间:2010-12-10 04:31:28

标签: android sim-card

当我用新的SIM卡替换现有的SIM卡时,我正在编写一个自动发送短信的应用程序。我可以使用SIM卡的用户ID来检查这个但是每次android设备启动时我都会检查它。 感谢...

2 个答案:

答案 0 :(得分:3)

编写启动广播接收器。每次设备启动时都会运行。将以下意图添加到清单中:

    <receiver android:name=".StartupReceiver">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
            <category android:name="android.intent.category.HOME" />
        </intent-filter>
    </receiver>

使用以下代码:

public class StartupReceiver extends BroadcastReceiver{
    @Override
    public void onReceive(Context context, Intent intent) {
        Intent intent = new Intent(...);
        context.startActivity(intent );
    }
}

答案 1 :(得分:0)

dhaag23的答案涵盖了如何设置启动接收器。但是,它没有提到应用程序必须具有启动完成权限或任何有关您的SIM卡要求的权限

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

要检查SIM卡值,我已设置为在应用设置中存储设备的电话号码。请注意,这可以由用户在应用程序设置中清除,您必须小心处理首次初始化的情况。如果您检测到当前电话号码与设置中先前存储的值不匹配,则可以断定它是新的SIM卡。

以下是我用来获取当前手机的方法#:

public static String getPhoneNumber(Context context) {
    TelephonyManager phoneManager = (TelephonyManager) 
            context.getSystemService(Context.TELEPHONY_SERVICE);
    String phoneNumber = phoneManager.getLine1Number();
    return phoneNumber;
}

获取SIM序列的方法。

public static String getSimSerialNumber(Context context) {
    TelephonyManager phoneManager = (TelephonyManager) 
            context.getSystemService(Context.TELEPHONY_SERVICE);
    String phoneNumber = phoneManager.getSimSerialNumber();
    return phoneNumber;
}

如果有办法明确检查新卡/缺失SIM卡的存在,我不确定它是什么。我上面用于获取电话号码的方法显然在所有运营商上都不可靠。此外,使SIM卡串口仅适用于SIM卡电话。