6

CellInfo のデータを取得したいのですが、Emulator では cellinfo.size() が必ず NullPointerException になります。

CellInfo リンク

例外の状況がよくわかりません。理由を知っている人はいますか?

私が間違ったコードを書いたかどうか?または誰かが同じ例外に遭遇しましたか?

    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

まあ、私は同じ問題を抱えていました!CellInfo は null です。何も入れていないためです。だから私はリスナーを少し助けようとします。私は彼に .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 に答える
0

私は同じ問題を抱えていて、それはs4でしか機能しませんでした.

于 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 に答える