首页 > 解决方案 > requestCellInfoUpdate() 的正确用法是什么?

问题描述

利用onSignalStrengthsChangedgetAllCellInfo()和相关方法,我的应用程序监控细胞信号数据并实时显示结果。我的代码在以 API 28 及更低版本为目标时运行良好,在数据更改时自动刷新数据。以 API 29 为目标会导致一些Android 10 设备无法更新数据——但不是全部。

我发现TelephonyManager.requestCellInfoUpdate()已添加到 API 29,可能需要(?)来解决此问题。但是,除了Android Reference 上的简明定义之外,我无法找到有关此方法的任何信息。是否需要使用此方法刷新单元格信息?是否有任何代码示例或进一步的解释?

如果该方法不相关,那么 API 29 中是否还有可能导致此行为的更改?ACCESS_FINE_LOCATION已确认被授予,这似乎是唯一的其他相关 API 更改。

标签: androidandroid-networkingandroid-10.0

解决方案


阅读文档,文档中提到了这一点getAllCellInfo()

面向 Android Q 或更高版本的应用将不再通过调用此 API 来触发缓存的 CellInfo 刷新。相反,这些应用程序将收到最新的缓存结果,这些结果可能不是最新的。面向 Android Q 或更高版本的应用希望请求更新的 CellInfo 应调用 requestCellInfoUpdate(); 但是,在所有情况下,更新都将受到速率限制且无法保证。要确定 CellInfo 数据的新近度,调用者应检查 CellInfo#getTimeStamp()。

因此,如果您的目标是 Android Q 或更高版本,您应该选择requestCellInfoUpdate()


推荐阅读