我有一个获取手机信息塔的信息的Android应用程序。我使用这个getAllCellInfo()来获取主小区和相邻小区的信息。我在manifest.xml中包含了ACCESS_COARSE_LOCATION权限,并在运行时请求了权限。
它适用于其他手机,但在华为Honor 7中,该函数返回一个空列表。
我的代码:
目录下载:
我检查了其他人的问题: getAllCellInfo returns null in android 4.2.1和Android getAllCellInfo() returns null。
从一个问题来看,我想华为手机,他们不支持getAllCellInfo(),直到我安装Network Cell Info Lite和NetMonster,似乎应用程序可以获取华为Honor中的单元格信息7:
Network Cell Info Lite
NetMonster
有人有任何相关信息吗?
答案 0 :(得分:2)
如果在getAllCellInfo()
中没有单元格时进行一些小工作,我会使用getCellLocation()
来获取primaryCellId和trackingAreaCode,如下所示:
Log.d(TAG, "updateCurrentCell: can't find any cells with getAllCellInfo");
CellLocation primaryLocation = telephonyManager.getCellLocation();
if (primaryLocation != null) {
int primaryCellId = Integer.parseInt(primaryLocation.toString().split(",")[1]);
int trackingAreaCode = Integer.parseInt(primaryLocation.toString().split(",")[0].replace("[", ""));
} else {
Log.d(TAG, "updateCurrentCell: not even with getCellLocation");
}
答案 1 :(得分:2)
尽管这很晚,但对于遇到相同问题的其他人可能会有帮助。
首先让我解释一下问题:
getAllCellInfo()
。getAllCellInfo()
在Honor上返回了 空列表 和 空 。然后:
我发现this page在其中提到getAllCellInfo
在某些手机上可能无法使用:
private void getAllCellInfo(List<CellInfo> cellInfo) {
// only for registered cells is returned identify
// SlimKat in Galaxy Nexus - returns null :-/
// Honor 7 - returns empty list (not null), Dual SIM?
// ...
}
我找到了this page (LG G4 not recognised by Android Studio)。根据{{3}},我贬低了LG驱动程序;最后,Android Studio调整了LG K8手机。
最后,我的应用程序可以在双SIM卡手机上运行。
所以,我的发现:
getAllCellInfo
在某些 Dual Sim Huawei / Honor手机 上不起作用。
使用Henry Thomas's solution,以便Android Studio识别LG手机。
答案 2 :(得分:0)
有许多方法可以实现CellInfo()。
某些设备不支持 getAllCellInfo()。
尝试 telephonyManager.getNeighboringCellInfo()(不建议使用此方法,但某些设备仍支持该方法)
要从该设备获取cellinfo,请尝试在SDK(API)21(不推荐)上构建您的应用。
(能够显示所有信息的应用很可能是针对API 21或更少的应用构建的)。
答案 3 :(得分:0)
可能为时已晚,但是当您定位到 Android 10 或更高版本时,您应该调用 requestCellInfoUpdate
val subscriptionManager = getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE)
as SubscriptionManager
for (subs in subscriptionManager.activeSubscriptionInfoList) {
val telephonyManager =
(getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager)
.createForSubscriptionId(subs.subscriptionId)
telephonyManager.requestCellInfoUpdate(mainExecutor,
object : TelephonyManager.CellInfoCallback() {
override fun onCellInfo(cellInfo: MutableList<CellInfo>) {
println("updated_cells_count: ${cellInfo.size}")
}
override fun onError(errorCode: Int, detail: Throwable?) {
super.onError(errorCode, detail)
println("updated_cells_error:\n")
detail?.printStackTrace()
}
})
}