首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以在app安装日期前查询网络使用数据

是否可以在app安装日期前查询网络使用数据
EN

Stack Overflow用户
提问于 2019-07-29 20:59:08
回答 1查看 110关注 0票数 2

我正在编写一个应用程序的一部分,显示移动数据的使用情况,我也希望它能显示用户安装应用程序之前的数据。目前,每当我在某个设备上安装应用程序之前查询某个时间范围的数据时,NetworkStatsManager.queryDetails都会返回一个不包含buckets的NetworkStats对象。

我已经设法在应用程序中安装日期之后获得了有关移动数据使用情况的正确数据。

奇怪的是,我试图删除设置中的所有缓存/数据,并卸载并重新安装应用程序。在此之后,应用程序仍然可以在卸载之前查询数据,但在我第一次安装应用程序之前就不能了。我的直觉是,在用户授予PACKAGE_USAGE_STATSACCESS_NETWORK_STATEREAD_PHONE_STATE权限之前,安卓不允许你访问数据。

NetworkStatsNetworkStatsManager的文档似乎没有提到任何关于数据历史的内容。

NetworkStatsManager的获取方式如下:

代码语言:javascript
复制
val networkStatsManager by lazy {
                context.getSystemService(Context.NETWORK_STATS_SERVICE) as NetworkStatsManager
}

NetworkStats对象在这里获得:

代码语言:javascript
复制
                mobileDataNetworkStats = networkStatsManager.queryDetails(
                        ConnectivityManager.TYPE_MOBILE,
                        getSubscriberId(context, ConnectivityManager.TYPE_MOBILE),
                        from.time,
                        to.time)

这就是我迭代存储桶的方式

代码语言:javascript
复制
            val bucket: NetworkStats.Bucket = NetworkStats.Bucket()
            mobileDataNetworkStats.getNextBucket(bucket)

            var currentUsage = usagePerUid[bucket.uid]
            currentUsage = when (currentUsage) {
                null -> 0
                else -> currentUsage
            }

            currentUsage += bucket.rxBytes
            currentUsage += bucket.txBytes

            usagePerUid[bucket.uid] = currentUsage

那么,是否可以在安装日期之前(或从用户授予权限的日期之前)通过queryDetailsquerySummary获取存储桶呢?

EN

回答 1

Stack Overflow用户

发布于 2021-02-18 20:43:58

是的,这是可能的。只需选择InternalStatManager你想要的时间

代码语言:javascript
复制
val summaryStats = networkStatManager!!.querySummary(
            networkType, subscriberId, startTime, endTime
        )
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57254400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档