【问题标题】:getSimSerialNumber() return null inside BroadcastReceivergetSimSerialNumber() 在 BroadcastReceiver 中返回 null
【发布时间】:2012-09-24 19:53:03
【问题描述】:

我有一个大问题我想检测一下在BOOT_COMPLETED for BroadcastReceiver之后SIM卡有没有换过 我在我的清单上写这个

        <receiver android:name="startMobBroacastReciver">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED"/>
        </intent-filter>
    </receiver>

权限是

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

这是我的代码

        public void onReceive(Context context, Intent intent) {
    // TODO Auto-generated method stub


    if("android.intent.action.BOOT_COMPLETED".equals(intent.getAction()))
    {

          tm=(TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
            tel_num= (GsmCellLocation) tm.getCellLocation();
           prefs=context.getSharedPreferences("myprefs", 0);
           Log.i("SIM", " "+tel_num.getCid()+" "+tel_num.getLac()+" "+tm.getSimSerialNumber());
           sim_serial_number=prefs.getString("SIM_serial", "null");

 Toast.makeText(context, "add "+tm.getSimSerialNumber(), Toast.LENGTH_LONG).show();

顺便说一句 tel_num.getCid() 和 tel_num.getLac() 返回值但 tm.getSimSerialNumber() 返回 null ,这就是让我发疯的原因:( 请帮忙

【问题讨论】:

标签: android broadcastreceiver telephonymanager


【解决方案1】:

在从 sim 卡获取数据之前设置一个最长 1 分钟的延迟。需要初始化卡。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-08
    相关资源
    最近更新 更多