java - NeighboringCellInfo、CID 和 LAC 的空问题

标签 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" 
      +"Base station CID is " +CID, Toast.LENGTH_SHORT);  
    output.show();

但在这种情况下,我收到 -1 值(据我所知,这意味着它不是 GSM,但当我检查 isGSM 时,它显示“true”)。 我发现的另一种上网方式(我更新了一下)

public void GetID(){  
 List<NeighboringCellInfo>  neighCell = null; 
 TelephonyManager telManager = ( TelephonyManager )getSystemService(Context.TELEPHONY_SERVICE); 
 neighCell = telManager.getNeighboringCellInfo();  
 for (int i = 0; i < neighCell.size(); i++) {  
 try {  
   NeighboringCellInfo thisCell = neighCell.get(i);  
   int thisNeighCID = thisCell.getCid();  
   int thisNeighRSSI = thisCell.getRssi();  
   log(" "+thisNeighCID+" - "+thisNeighRSSI);  
 } catch (NumberFormatException e) {  
   e.printStackTrace();
   NeighboringCellInfo thisCell = neighCell.get(i);  
   log(neighCell.toString());  
 }  
}  
}

但在这种情况下,应用程序会在我按下执行按钮后立即崩溃。 Eclipse 没有显示任何错误。可能有人知道如何解决我的问题?

Logcat says: 10-05 22:53:27.923: ERROR/dalvikvm(231): Unable to open stack trace file '/data/anr/traces.txt': Permission denied

使用的权限:

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

更新。我包括上面的行,崩溃消失了,但现在按下按钮后没有任何反应。 更新了源代码。

最佳答案

您是否已确认您在 list 文件中设置了正确的权限?

TelephonyManager 需要一些权限,具体取决于您使用的 API。对于大多数 API,您需要 READ_PHONE_STATE,此外 getNeighboringCellInfo 的文档中提到了 ACCESS_COARSE_UPDATES,但是我认为这可能是一个文档错误,您实际上需要 ACCESS_COARSE_LOCATION,它被记录为“允许应用程序访问粗略(例如,Cell-ID、WiFi)位置”

关于java - NeighboringCellInfo、CID 和 LAC 的空问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3868223/

相关文章:

java - 电子邮件的附件?

java - 在 JSF 中格式化消息

Android TextView : How to place text above specific position in line/Setting height for ReplacementScan subclass

android - 如何在 Android 应用程序中使用 OSM map ?是否有任何教程可以学习如何在 android 中使用 OSM。?

android - Firebase 身份验证 : Getting an AuthCredential after sign in using FirebaseUI-Android

java - JTabbedPane 选项卡上的繁忙图形

java - 监听 RFID 扫描仪和打印数据

java - 反转整个文本段落而不是反转每个连续行

java - 准备语句 Sqlite Android 的跟踪行

android - 移动相机位置以适应关于标记高度的 LatLngBounds