6

我想获取 CellInfo 数据,但 cellinfo.size() 总是在模拟器中发生 NullPointerException。

细胞信息链接

我不确定异常情况,有人知道原因吗?

是否我写错了代码?还是有人遇到同样的例外?

    TelephonyManager TM = (TelephonyManager) this
            .getSystemService(Context.TELEPHONY_SERVICE);
    List<CellInfo> cellinfo = TM.getAllCellInfo();
    Log.d("AA",Integer.toString(cellinfo.size()));
4

5 回答 5

0

某些电话信息受权限保护。您的应用程序无法访问受保护的信息,除非它具有在其清单文件中声明的适当权限。

于 2012-12-27T11:08:57.270 回答
0

TelephonyManager.getAllCellInfo()很多设备上没有实现,函数总是返回null。

在这里查看我的答案:getAllCellInfo 在 android 4.2.1 中返回 null

于 2013-09-08T22:30:28.153 回答
0

我有同样的问题,它只适用于 s4。因此必须删除单元信息侦听器(PhoneStateListener.LISTEN_CELL_INFO)才能工作。

于 2013-11-07T14:10:50.250 回答
0

TelephonyManager.getAllCellInfo()在 API 级别 17 中添加,因此您可以在 API 级别 17 和 + 上使用它。

此外,您必须ACCESS_COARSE_LOCATION向清单文件添加权限:

如果信息不可用,则返回
CellInfo 列表或 null。
需要权限:ACCESS_COARSE_LOCATION

查看文档

于 2013-11-07T14:19:54.703 回答
0

好吧,我也有同样的麻烦!CellInfo 为空,因为我们没有放任何东西。所以我试着帮助听众一点。我强迫他让 .getAllCellInfo 进入监听器。这对我有用。

 class MyPhoneStateListener extends PhoneStateListener
{
    int signal;
    String cellList;
    @Override
    public void onCellInfoChanged(List<CellInfo> cellInfo)
    {
        super.onCellInfoChanged(cellInfo);
        cellInfo = Tel.getAllCellInfo();
        if (cellInfo!=null)
            cellList = cellInfo.toString();
        else cellList="ni mierda";
        mSignalStrengthView.append("" + String.valueOf(cellList));
    }
    @Override
    public void onSignalStrengthsChanged(SignalStrength signalStrength)
    {
        super.onSignalStrengthsChanged(signalStrength);
        signal = signalStrength.getGsmSignalStrength()*2-113;
        mSignalStrengthView.append("GSM signal strength is " +    String.valueOf(this.signal));
    }
}
于 2016-07-18T03:57:07.607 回答