我想显示单元格位置,ID和区号。但是,当我运行应用程序时,它给我一个运行时错误。从调试角度来看,我看到GsmCellLocation
对象产生一个空值。 (cellLocation == null
如果我调试)
这是我的示例代码:
TelephonyManager teleplonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
GsmCellLocation cellLocation = (GsmCellLocation)teleplonyManager.getCellLocation();
int cid = cellLocation.getCid();
int lac = cellLocation.getLac();
textGSMCellLocation.setText(cellLocation.toString());
textCID.setText("gsm cell id : "+String.valueOf(cid));
textLAC.setText("gsm location area code : "+String.valueOf(lac));
这是我的menifest.xml
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
答案 0 :(得分:1)
在The Docs中说:
返回设备的当前位置。如果当前位置不可用,则返回null。
重申:它返回null,因为当前位置不可用。
可能是位置提供商被禁用或者根本找不到位置。
在任何情况下,如果您需要位置,最好使用LocationManager
,因为它专为位置更新而设计,并且比TelephonyManager.getCellLocation();