Java 相邻CellInfo、CID和LAC存在空问题

Java 相邻CellInfo、CID和LAC存在空问题,java,android,Java,Android,有一段时间,我一直在尝试获取基站附近的CellID和LAC。不幸的是,我没有做到这一点。第一种选择是使用: GsmCellLocation xXx = new GsmCellLocation(); CID = xXx.getCid(); LAC = xXx.getLac(); Toast output = Toast.makeText(getApplicationContext(), "Base station LAC is "+LAC+"\n"

有一段时间,我一直在尝试获取基站附近的CellID和LAC。不幸的是,我没有做到这一点。第一种选择是使用:

GsmCellLocation xXx = new GsmCellLocation();  
    CID = xXx.getCid();  
    LAC = xXx.getLac();  
    Toast output = Toast.makeText(getApplicationContext(), "Base station LAC is "+LAC+"\n" 
      +"Base station CID is " +CID, Toast.LENGTH_SHORT);  
    output.show();
但在本例中,我接收到-1值(据我所知,这意味着它不是GSM,但当我与isGSM核对时,它显示为“true”)。 我发现上网的另一种方式(我更新了一点)

更新。我包括了上面的行,崩溃消失了,但现在我按下按钮后什么也没发生。
更新了源代码。

您是否已验证在清单文件中设置了正确的权限


TelephonyManager
需要许多权限,具体取决于您使用的API。大多数API都需要
READ\u PHONE\u STATE
,另外
getneighborringcellinfo
的文档中提到
ACCESS\u rough\u UPDATES
,但是我认为这可能是一个文档错误,您实际上需要
ACCESS\u rough\u LOCATION
,它被记录为“允许应用程序访问rough”(例如,手机ID、WiFi)位置“

手机ID的实现因移动设备而异,因为这些功能被视为可选功能。例如:

Samsung(所有设备):GetNeigBuuringCells()完全不受支持,始终返回空列表

据此:
也有同样的问题。请尝试在分叉线程(非UI)上运行相邻单元格的查询。 至少我遇到的问题是,hammerhead android检查了这个问题,并且会立即返回null,并在logcat中留下一个日志:

@PhoneInterfaceManager: getNeighboringCellInfo RuntimeException - This method will deadlock if called from the main thread.

使用logcat获取崩溃的堆栈跟踪。在eclipse中打开logcat视图,或选择DDMS透视图。我有一个类似的问题。如果我有3G连接,一切正常,但在2G连接上,有时没有cid,也没有邻居单元。可能这与你的连接类型有关。我打赌这应该在至少在emulator上,但我收到多个崩溃(无法打开堆栈跟踪文件“/data/anr/traces.txt”:权限被拒绝)如果我尝试使用任何方法来获得有趣的情况,似乎我得到了空的neighCell列表…只是一个旁注。我有一个类似的问题,包括所有需要的权限。只有设备硬重置解决了这个问题。
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.SEND_SMS"></uses-permission>
<uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_COARSE_UPDATES" />
TelephonyManager telManager = ( TelephonyManager )getSystemService(Context.TELEPHONY_SERVICE);
@PhoneInterfaceManager: getNeighboringCellInfo RuntimeException - This method will deadlock if called from the main thread.