利用onSignalStrengthsChanged
,getAllCellInfo()
和相关方法,我的应用程序监视细胞信号数据并实时显示结果。当定位到API 28及更低版本时,我的代码可以很好地工作,并在数据更改时自动刷新数据。 Targeting API 29导致某些 Android 10设备无法更新数据-并非全部。
我发现TelephonyManager.requestCellInfoUpdate()
已添加到API 29,可能需要(?)才能解决此问题。但是,除了the concise definition on the Android Reference,我无法找到有关此方法的任何信息。是否需要使用此方法来刷新单元格信息?是否提供任何代码示例或进一步的解释?
如果该方法不相关,API 29中是否还有其他更改可能导致此行为?确认ACCESS_FINE_LOCATION
被授予,这似乎是唯一其他相关的API更改。
阅读文档,getAllCellInfo()
文档中对此进行了提及。
定位到Android Q或更高版本的应用将不再通过调用此API来触发刷新的CellInfo。而是,那些应用程序将收到最新的缓存结果,可能不是最新的。面向Android Q或更高版本且希望请求更新的CellInfo的应用程序应调用requestCellInfoUpdate();。但是,在所有情况下,更新都将受到速率限制,并且无法保证。要确定CellInfo数据的最新性,调用者应检查CellInfo#getTimeStamp()。
因此,如果您的目标是Android Q或更高版本,则应该选择requestCellInfoUpdate()