Profile Owner应用调用retrieveNetworkLogs()遇阻:求batchToken获取方法
获取retrieveNetworkLogs所需的batchToken方法
核心逻辑
batchToken用于分页拉取网络日志,遵循以下规则:
- 首次调用时,直接传入**
0L**作为初始token,这是系统规定的起始标识,用来获取第一批日志。 - 后续每一批日志的
batchToken,取自上一次调用retrieveNetworkLogs()返回的NetworkLogs对象中的nextBatchToken字段。当nextBatchToken为0L时,说明已没有更多日志可拉取。
调整后的示例代码
val devicePolicyManager = getSystemService(Activity.DEVICE_POLICY_SERVICE) as DevicePolicyManager? // 启用网络日志 devicePolicyManager?.setNetworkLoggingEnabled(null, true) val isEnabled = devicePolicyManager?.isNetworkLoggingEnabled(null) // 首次调用:传入0L获取初始日志批次 val initialLogs = devicePolicyManager?.retrieveNetworkLogs(null, 0L) // 拉取下一批日志(如果有的话) initialLogs?.let { if (it.nextBatchToken != 0L) { val nextLogs = devicePolicyManager.retrieveNetworkLogs(null, it.nextBatchToken) } }
关键说明
- 不要尝试自行生成
batchToken,所有有效token都来自NetworkLogs返回结果,初始值固定为0L。 - 每次调用只会返回当前批次的日志,需要循环使用
nextBatchToken来获取完整的日志记录。
内容的提问来源于stack exchange,提问作者Mahedi Hasan
相关产品推荐
相关产品推荐

