2012-11-29 11 views
6

Chciałbym uzyskać dane CellInfo, ale cellinfo.size() zawsze występuje NullPointerException w Emulator.Lista Android API <cellinfo>

CellInfo Link

nie jestem pewien, że sytuacja jest wyjątkiem, ktoś zna powód?

Czy napisałem zły kod? lub ktoś spotkał się z tym samym wyjątkiem?

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

czy chcesz korzystać z emulatora/telefonu z poziomem interfejsu API 17? – Arseniy

+0

TAK! Wybieram emulator poziomu API 17! –

Odpowiedz

0

Niektóre informacje telefoniczne są chronione prawnie. Twoja aplikacja nie może uzyskać dostępu do chronionych informacji, chyba że ma odpowiednie uprawnienia zadeklarowane w pliku manifestu.

0

miałem ten sam problem i to działało tylko na s4.hence musiał usunąć informacji komórka słuchacza (PhoneStateListener.LISTEN_CELL_INFO) Inorder do pracy.

0

TelephonyManager.getAllCellInfo() został dodany na poziomie interfejsu API 17, dzięki czemu można go używać na poziomie 17 i + Api.

Ponadto należy dodać ACCESS_COARSE_LOCATION uprawnienie do pliku manifestu:

Returns
Wypis z cellinfo lub null, jeśli informacje niedostępne.
Wymaga Permission: ACCESS_COARSE_LOCATION

See Docs

+0

Dodano już pozwolenie, ale wciąż mam wyjątek NullPointerException. Tym razem wypróbuję w Samsung Note3 (Android 4.3). –

0

również miałem ten sam problem! CellInfo ma wartość null, ponieważ nic nie wstawiliśmy. więc próbuję trochę pomóc słuchaczowi. Zmuszam go, aby dostał słuchacza w .getAllCellInfo. oto co działa dla mnie.

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)); 
    } 
}