问题
i'm trying to get info about the neighboring cells my phone can "see" atm. so far so good. i do this like this:
telManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
//...
ArrayList<NeighboringCellInfo> neighboringCellList = (ArrayList<NeighboringCellInfo>) telManager.getNeighboringCellInfo();
unfortunately, this list turns out to be empty all the time. even in different places. i live in berlin, so i don't think it's because there is actually just the one cell available!
update: my permissions look like this:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_UPDATES" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
回答1:
I've seen several questions on the same issue but it seems like none of them got a good and deterministic solution. The most common suggestion is to make sure you have the correct permission (which I see you do in your question) and there are some that say that this only works on 2G and not 3G.
Take a look at the following similar questions. It might point you in some new directions:
getNeighboringCellInfo() returning null list
Null Issue with NeighboringCellInfo, CID and LAC
Get neighboring cell in Android returns null
回答2:
getNeighboringCellInfo()
is deprecated in android . You should use getAllCellInfo()
and save output of that in a List
and using a loop on each element of List decide which is neighbor using element.isRegistered()
.
NeighboringCells have isRegistered() == false
.
来源:https://stackoverflow.com/questions/9328158/android-neighboringcellinfo-always-empty-why