0

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

4

2 回答 2

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 );
    }
}
于 2010-12-10T05:49:34.947 回答
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 卡手机。

于 2012-11-30T13:28:46.483 回答