安卓SIM卡更换

6

在Android启动时使用Service,通过TelephonyManager检测SIM卡号是否可行...

TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String ss=tm.getSimSerialNumber();
1个回答

11

你需要为启动完成操作即android.intent.action.BOOT_COMPLETED注册一个广播接收器。

在此接收器的onReceive中,您可以使用以下代码行启动您的服务并获取SIM卡号。

  TelephonyManager telephoneMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
  String phoneNumber = telephoneMgr.getLine1Number();

还需要在清单文件中添加READ_PHONE_STATE权限以读取电话号码。

你可以通过广播接收器启动服务,如下所示 -

 public class BootListener extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent arg1) {
    Intent intent = new Intent(context,Myservice.class);
    context.startService(intent);
}

}


这是一个简单的HTML段落,其中包含一个右大括号字符“ } ”。

是的,我尝试过了...但我无法启动服务...感谢朋友们的回复... - subrussn90
2
你可以从广播接收器启动服务,如下所示- public class BootListener extends BroadcastReceiver { @Override public void onReceive(Context context, Intent arg1) { Intent intent = new Intent(context,Myservice.class); context.startService(intent); }} - Sushil
我向前迈出了一步...就像所说的那样,我能够在启动时启动服务...但是当我获取SIM卡序列号时,程序崩溃了...对于这个问题有什么想法吗? - subrussn90
2
你能确认一下是否已经添加了清单权限 - <uses-permission android:name="android.permission.READ_PHONE_STATE"/>。因为我已经在模拟器上测试过程序,它可以正常工作。 - Sushil
1
顺便说一下,telephoneMgr.getLine1Number(); 是一个非常不可靠的方法。 - Abdul Wasae

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接