versione My Android è 4.2.1 e sto cercando di fare uso di TelephonyManager.getAllCellInfo()
metodo. Nel mio file manifesto ho i ACCESS_COARSE_UPDATES
, ACCESS_COARSE_LOCATION
, ACCESS_FINE_LOCATION
permessi. Tuttavia, quel metodo restituisce null
.getAllCellInfo restituisce null in Android 4.2.1
risposta
Il comando seguente elenca le autorizzazioni disponibili su un telefono:
adb shell pm list permissions -g
Sul Nexus 4 (4.2.2) ACCESS_COARSE_UPDATES il permesso non è elencato.
UPDATE:
Quando si cerca però ramo principale del codice sorgente non v'è alcun riferimento a ACCESS_COARSE_UPDATES quindi questo sembra essere e l'errore nella documentazione. In effetti il codice pertinente richiede solo ACCESS_COARSE_LOCATION e/o ACCESS_FINE_LOCATION.
Tracciare attraverso la seguente:
- TelephonyManager
- ITelephony
- PhoneInterfaceManager
- PhoneGlobals
- PhoneFactory
- GsmPhone
- PhoneBase
- ServiceStateTracker
In ServiceStateTracker:
/**
* @return all available cell information or null if none.
*/
public List<CellInfo> getAllCellInfo() {
return null;
}
Quindi sembra che in tutti i casi verrà restituito un valore null.
Here è un collegamento a un report difetto di corrente.
Da TelephonyManager.getAllCellInfo()
javadoc:
Questo è preferibile rispetto all'utilizzo getCellLocation sebbene per vecchi dispositivi puo restituire null nel qual caso getCellLocation dovrebbe essere chiamato.
Some sources relazione che questo metodo è implementato solo sui dispositivi CDMA/LTE, e altri tipi di dispositivi (anche GSM/LTE) restituirà null. Dove implementato, restituirà solo celle LTE.
TelephonyManager.getCellLocation()
restituirà solo GSM/UMTS o CDMA cellule. È limitato a una cella, quella con cui il dispositivo è attualmente registrato. Questa è la tua scommessa più sicura se sei sicuro che il tuo codice verrà eseguito solo su dispositivi GSM/UMTS o CDMA e se sei interessato solo alla cella con cui è attualmente registrato il dispositivo.
per ottenere informazioni su altre cellule circostanti, utilizzare TelephonyManager.getNeighboringCellInfo()
. Tuttavia, è limitato alle celle GSM/UMTS. Inoltre, la sua implementazione dipende dal firmware della radio. La maggior parte dei dispositivi Samsung (e non pochi) restituirà una lista vuota.
Conclusione: ottenere informazioni su celle vicine su Android è un'attività piuttosto complicata al momento. Potrebbe essere necessario utilizzare una combinazione di tutti e tre i metodi per ottenere le informazioni desiderate, e anche in questo modo, alcune cose potrebbero essere inaccessibili.
Gli stati API seguenti:
GetAllCellInfo
è preferito rispetto all'utilizzo getCellLocation
sebbene per vecchi dispositivi puo restituire null
nel qual caso dovrebbe essere chiamato getCellLocation
.
- 1. Android getExternalCacheDir() restituisce null
- 2. Android: bitmapfactory.decodestream restituisce null
- 3. Android LocationManager.getLastKnownLocation() restituisce null
- 4. Android - MediaStore.Video.query() restituisce null
- 5. android device.getUuids restituisce null
- 6. android get restituisce attività null
- 7. findFragmentByTag() restituisce sempre null - Android
- 8. Android - findViewById (R.id.list) restituisce null
- 9. Android: getSearchableInfo (getComponentName()) restituisce null?
- 10. Android: BitmapFactory.decodeResource che restituisce null
- 11. InstrumentationTestCase Android getFilesDir() restituisce null
- 12. Android: this.getApplication() restituisce puntatore a NULL
- 13. test case strumentazione android - getinstrumentation() restituisce null
- 14. childfragments Android di viewpager getActivity restituisce null
- 15. Il cookie di webview Android restituisce null
- 16. Su android 4.4 webView.getHitTestResult() restituisce null
- 17. Android SipManager: android.net.sip.SipException: SipService.createSession() restituisce null
- 18. listFiles() restituisce null sull'emulatore Android 6.0
- 19. avcodec_find_encoder (AV_CODEC_ID_H264) restituisce null
- 20. getActionBar restituisce null
- 21. ContentResolver restituisce sempre null
- 22. findFragmentById restituisce sempre null
- 23. LocationClient getLastLocation() restituisce null
- 24. Android 4.2.1 crenatura carattere errata (spaziatura)
- 25. Android SDK Mediaplayer.create restituisce in modo casuale null
- 26. Filtro intento: intent.getData() restituisce null
- 27. ClassLoader getResourceAsStream restituisce null
- 28. Perché getHandler() restituisce null?
- 29. Url.RouteUrl restituisce null
- 30. SupportMapFragment.getmap() restituisce null
Il mio telefono è anche Nexus e non elenca il permesso ACCESS_COARSE_UPDATES. Pensi che su alcuni telefoni con versione 4.2 diversa da Nexus getAllCellInfo() potrebbe funzionare? Hai avuto un cambio per controllarlo su qualche altro telefono? – mkd156
Quindi, come ho capito, questo è un bug nell'API e non è possibile ottenere le informazioni sulla cella? Mi chiedo, non hanno intenzione di sistemare un bug importante? – mkd156