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