Moja wersja Androida to 4.2.1 i próbuję użyć metody TelephonyManager.getAllCellInfo()
. W moim pliku manifestu mam uprawnienia: ACCESS_COARSE_UPDATES
, ACCESS_COARSE_LOCATION
, ACCESS_FINE_LOCATION
. Jednak ta metoda zwraca null
.getAllCellInfo zwraca zero w systemie Android 4.2.1
Odpowiedz
Następujące polecenie wymienia uprawnienia dostępne na telefon:
adb shell pm list permissions -g
Na Nexus 4 (4.2.2) ACCESS_COARSE_UPDATES uprawnienie nie jest na liście.
UPDATE:
Patrząc jednak oddział mistrz kodzie źródłowym nie ma odniesienia do ACCESS_COARSE_UPDATES więc wydaje się, że i błędów w dokumentacji. W rzeczywistości odpowiedni kod wymaga tylko ACCESS_COARSE_LOCATION i/lub ACCESS_FINE_LOCATION.
zakaźnych poprzez następujący:
- TelephonyManager
- ITelephony
- PhoneInterfaceManager
- PhoneGlobals
- PhoneFactory
- GsmPhone
- PhoneBase
- ServiceStateTracker
W ServiceStateTracker:
/**
* @return all available cell information or null if none.
*/
public List<CellInfo> getAllCellInfo() {
return null;
}
Tak to wygląda we wszystkich przypadkach będzie to zwróci null.
Here to link do bieżącego raportu o usterce.
Od TelephonyManager.getAllCellInfo()
javadoc:
ta jest korzystniejsza niż przy użyciu getCellLocation chociaż dla starszych urządzeń może to zwróci null w tym przypadku getCellLocation powinien być nazywany.
Some sources raport, że metoda ta jest realizowana tylko na urządzeniach CDMA/LTE oraz inne rodzaje urządzeń (w tym GSM/LTE) zwróci wartość null. Jeśli zostanie zaimplementowany, zwróci tylko komórki LTE.
TelephonyManager.getCellLocation()
spowoduje zwrócenie tylko komórek GSM/UMTS lub CDMA. Ogranicza się do jednej komórki, tej, z którą urządzenie jest aktualnie zarejestrowane. Jest to najbezpieczniejszy zakład, jeśli jesteś pewien, że twój kod będzie działał tylko na urządzeniach GSM/UMTS lub CDMA, a jeśli jesteś zainteresowany tylko komórką, z którą urządzenie jest aktualnie zarejestrowane.
Aby uzyskać informacje o innych otaczających komórkach, należy użyć TelephonyManager.getNeighboringCellInfo()
. Jest on jednak ograniczony do komórek GSM/UMTS. Jego implementacja zależy również od oprogramowania radiowego. Większość urządzeń Samsung (i całkiem sporo innych) zwróci pustą listę.
Wniosek: uzyskanie informacji o pobliskich komórkach w systemie Android jest obecnie bardzo nieuporządkowane. Może być konieczne użycie kombinacji wszystkich trzech metod, aby uzyskać pożądane informacje, a nawet w ten sposób niektóre rzeczy mogą być niedostępne.
Państwa API następujące:
GetAllCellInfo
jest korzystniejsze niż przy użyciu getCellLocation
chociaż dla starszych urządzeń może powrócić null
w takim przypadku należy getCellLocation
nazwie.
- 1. NSWindow zwraca zero (NSApplication)
- 2. Kiedy Registry.CreateSubKey zwraca zero?
- 3. Przydział MFMessageComposeViewController zwraca zero
- 4. AssetForURL zwraca zero
- 5. NSData contentsOfUrl zwraca zero
- 6. getHttpResponseCode() zwraca -1 w systemie Android 2.2
- 7. LocationClient getLastLocation() zwraca zero null
- 8. Dlaczego indexPathForItemAtPoint zawsze zwraca zero
- 9. dequeueReusableCellWithIdentifier nigdy nie zwraca zero
- 10. SQL Server, podział zwraca zero
- 11. Liczba NSMutableArray zawsze zwraca zero
- 12. NSKeyedUnarchiver unarchiveObjectWithFile: zwraca zero w init: metoda
- 13. Zatrzymaj make jeśli find -exec zwraca zero zero
- 14. Dziwne zachowanie IE: currentStyle zwraca zero
- 15. iOS BoxSDK zwraca zero dla sharedLink
- 16. Dlaczego mój wyjątek BlackBerry getMessage() zwraca zero?
- 17. Dlaczego to wywołanie SSL_pending zawsze zwraca zero?
- 18. zero || false i false || zero w Ruby
- 19. Dlaczego funkcja getBackStackEntryCount() obiektu FragmentManager zwraca zero?
- 20. Dlaczego metoda właściwości CIImage zwraca zero
- 21. get_selectedItems() [0] na RadGrid zwraca zero
- 22. Solr 4.2.1 SSLinitializationException
- 23. Android 4.2.1, Przerwy interfejsu WebView i interfejsu javascript
- 24. W języku Ruby, dlaczego równość z zerą ("Data.new == zero") zwraca zero?
- 25. pathForResource zwraca zero w aplikacji konsoli Mac OS X - Swift
- 26. Uruchamianie zadań Rake w RSpec wiele razy zwraca zero?
- 27. W tym nagłówki w projekcie Xcode 4.2.1
- 28. oddzwonienie w systemie Android?
- 29. deferredLocationUpdatesAvailable zwraca NIE w systemie iOS 10
- 30. onConfigurationchanged nie nazywa się jellybean (4.2.1)
Mój telefon jest również Nexusem i nie zawiera uprawnień ACCESS_COARSE_UPDATES. Czy myślisz, że na niektórych telefonach z wersją 4.2 innych niż Nexus getAllCellInfo() może działać? Czy masz jakąś zmianę, aby sprawdzić to na innym telefonie? – mkd156
Jak rozumiem, jest to błąd w API i nie można uzyskać informacji o komórce? Zastanawiam się, czy oni nie mają planów naprawy, to ważny błąd? – mkd156