2012-11-29 19 views
6

CellInfoデータを取得したいのですが、cellinfo.size()は常にエミュレータのNullPointerException が発生します。Android APIリスト<cellinfo>

CellInfo Link

私は例外状況は、誰もがその理由を知っているかわかりませんか?

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

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

APIレベル17のエミュレータ/電話機を使用していますか? – Arseniy

+0

はい!私はAPIレベル17エミュレータを選びました! –

答えて

0

一部のテレフォニー情報は許可保護されています。マニフェストファイルに適切な権限が宣言されていない限り、アプリケーションは保護された情報にアクセスできません。

0

を、私は同じ問題を持っていたし、それが仕事にINORDERセル情報リスナー(PhoneStateListener.LISTEN_CELL_INFO)を削除する必要がありましたs4.henceにのみ働きました。

0

TelephonyManager.getAllCellInfo()がAPIレベル17で追加されているため、APIレベル17および+で使用できます。情報利用できない場合

戻り
CellInfoのリストまたはnull:

また、あなたはあなたのマニフェストファイルにACCESS_COARSE_LOCATION許可を追加する必要があります。 ACCESS_COARSE_LOCATION

See Docs

+0

既にパーミッションが追加されていますが、まだNullPointerExceptionがあります。 今回はSamsung Note3(Android 4.3)で試してみます。 –

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)); 
    } 
} 
関連する問題