问题标签 [networkstatsmanager]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
12301 浏览

android - 使用 NetworkStatsManager 获取移动数据使用历史记录

我想知道数据使用历史,并注意到“新的”android-6NetworkStatsManager似乎是积极的(我已经使用TrafficStats了一段时间,但不会涵盖重启之前的任何内容)。

从 API 文档:

注意:此 API 需要 PACKAGE_USAGE_STATS 权限,该权限为系统级权限,不会授予第三方应用。但是,声明权限意味着使用 API 的意图,并且设备的用户可以通过设置应用程序授予权限。配置文件所有者应用程序被自动授予查询他们管理的配置文件上的数据的权限(即,对于除 querySummaryForDevice(int, String, long, long) 之外的任何查询)。设备所有者应用程序同样可以访问主要用户的使用数据。

我想知道聚合级别的数据使用情况,而不是了解使用数据的应用程序,所以我尝试像这样使用它:

不幸的是,这会引发SecurityException

android.permission.READ_NETWORK_USAGE_HISTORY第三方应用程序不允许该权限。所以这似乎是一个死胡同。

但是,我深入研究了内部结构,发现您可以使用内部/隐藏 API 来执行相同的操作,而无需请求任何权限:

我真的很想对公共 API 做同样的事情,那么,我该怎么做呢?

0 投票
3 回答
4611 浏览

java - Android 手机使用历史 NetworkStatsManager

我正在为 Android 6.0 制作应用程序,我想使用新类 NetworkStatsManager 来获取移动数据使用情况。

我在清单中添加了我需要的所有权限并需要权限运行时。

当我调用该方法时:

返回正确的 WIFI 使用值。

但是如果我用 TYPE_MOBILE 替换 TYPE_WIFI,结果总是 0。

0 投票
2 回答
2386 浏览

android - 如何使用新的 NetworkStatsManager 类获取所有 UID 的数据使用报告

我正在构建一个数据管理器应用程序,它需要通过移动和 wifi 接口报告每个应用程序的数据使用情况。

在尝试使用“NetworkStatsManager.querySummary”方法时,我只获得了一些 UID 的使用报告,但不是全部。虽然该方法的 API文档确实说

结果过滤为仅包含属于调用用户的 uid

我不清楚哪个 UID 属于调用用户,哪些不属于。请帮助我了解差异以及如何使用这个新的“NetworkStatsManager”类获取所有 UID 的数据使用报告。

0 投票
1 回答
2838 浏览

android - NetworkStatsManager 的 queryDetailsForUid() 方法总是返回所有应用程序的旧网络使用情况

我编写了一个代码来获取网络使用情况,但是 queryDetailsForUid(int networkType, StringsubscriberId,long startTime, long endTime, int uid) 这个方法总是返回旧数据。如何使用NetworkstatsManagerAPI 获取更新的数据?

0 投票
1 回答
1288 浏览

android - NetworkStatsManager.queryDetailsForUid 未获得与 TrafficStats 相同的值

我正在将新NetworkStats类与TrafficStats测量网络接口和给定应用程序(pex Chrome)的流量进行比较

由于TrafficStats自设备启动以来具有值,我正在执行的测试是这样的:

  1. 重启手机。
  2. 打开铬。
  3. 下载 10 mb 数据(通过 WiFi)。

得到的数据TrafficStats是这样的:

我授予的权限NetworkStats和我获得的值是:

获取数据的代码NetworkStats如下:

在哪里getDataFromBucket

我在某处读到桶是从两个小时开始的,所以我添加了以下代码:

但是 chrome 的数据仍然为 0,因为wifiBucketForApp并且mobileBucketForApp没有任何存储桶。

如果我设置bootTime为一天的开始(在我的国家是 18:30),我将获得:

有人知道为什么我没有获得与Chrome 应用程序TrafficStats从设备启动以来相同的值吗?NetworkStatsManager

0 投票
1 回答
1533 浏览

android - NetworkStatsManager.queryDetailsForUid 在给定的时间间隔内没有获得正确的数据

1)我正在检查牛轧糖,我已经获得以下许可

2) 代码片段

3)当我给出间隔 Start Time - 0 End Time - 时System.currentTimeMillis(),得到正确的数据。但是当我给出其他时间间隔时开始时间 - 1488441600(3 月 2 日)结束时间 - 1488902400(3 月 7 日 11;30)上述方法返回 0。并且 bucket.getEndTimeStamp()bucket.getStartTimeStamp()日志中打印为 0。任何人都知道如何从上述查询中获取数据对于特定的时间间隔请纠正我做错的地方。

0 投票
0 回答
555 浏览

android - 将 apk 作为系统应用推送时的 PACKAGE_USAGE_STATS 权限问题

我已经实现了一个应用程序来获取数据使用情况,为了获取数据,我们需要提供两个权限 -

  • PACKAGE_USAGE_STATS

  • READ_PHONE_STATE

当我将应用程序安装为 Play 商店应用程序时,它可以正常工作,但是当我将其作为系统应用程序推送时,它会崩溃。此崩溃的原因是 - PACKAGE_USAGE_STATS 权限。对于系统应用程序,其默认值已启用,但仍然崩溃并产生以下异常

java.lang.SecurityException:NetworkStats:用户和当前进程都没有 android.permission.READ_NETWORK_USAGE_HISTORY。在 android.os.Parcel.readException(Parcel.java:1620) 在 android.net.INetworkStatsSession$Stub$Proxy.getHistoryIntervalForUid(INetworkStatsSession.java:425) 在 android.os.Parcel.readException(Parcel.java:1573) 在android.app.usage.NetworkStats.startHistoryEnumeration(NetworkStats.java:341) 在 android.app.usage.NetworkStatsManager.queryDetailsForUid(NetworkStatsManager.java:201) 在 com.android.launcher3。

一旦我切换权限,它就可以正常工作。如何解决这个问题?

0 投票
1 回答
515 浏览

android - 访问 Marshmallow 之前的网络使用历史和统计信息

使用 Neworkstats 管理器,我可以从棉花糖设备访问网络使用历史记录和统计信息。如果该应用程序在棉花糖下面运行,不幸的是,由于以下错误而停止。

原因:java.lang.ClassNotFoundException:在路径上找不到类“android.app.usage.NetworkStatsManager”

我的应用程序应该在棉花糖设备下方和之后工作。我怎样才能做到这一点。感谢任何帮助......

提前致谢.....

0 投票
0 回答
385 浏览

android - Cordova android 应用程序在离线模式下工作

我正在开发科尔多瓦安卓应用程序。我已将所有 JSON 数据存储在来自服务器数据库的应用程序仪表板页面上的本地存储中。我还在 if else 循环中检查了“navigator.connection.type”以相应地运行代码以调用设备就绪中的离线函数或在线函数。当我的设备从在线变为离线或反之亦然时,如果我的手机处于离线功能,那么如果我有网络连接,它仍然会显示离线数据。当我使用命令 cordova run android -device 从 cli 运行项目代码时,它只会刷新显示警报。现在请帮助在我上线或下线后更新网络信息。

0 投票
1 回答
351 浏览

android - 在计算数据使用情况时为 querySummary 方法获取 NullPointerException

我正在使用 NetworkStatsManager 的 querySummary() 方法来计算数据使用情况,它给了我正确的使用方法,但有时它会为此方法抛出 NullPointerException。

UsageTestService 中的错误:

我的代码:

会有什么问题?