问题标签 [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 投票
0 回答
381 浏览

android - NetworkStatsManager:querySummary 为不同的开始时间返回相同的数据

我正在尝试使用 NetworkStatsManager 类来检索我的应用程序的数据使用情况。我想在一小时内跟踪一次(每隔一小时),当我阅读 queryDetails 时,这对我来说不是一个选项,因为它只是 2-3 小时。

当我尝试使用 querySummary 时:

使用两个不同的 startTime 调用 getNetworkStats:

返回相同的数据。为什么?

0 投票
1 回答
141 浏览

android - Android:热点手机和使用它的手机上的数据使用量之间的差异

我正在尝试比较使用其他手机热点的手机与手机热点之间的数据使用差异。

在打开热点的手机上,我正在使用此代码来计算热点的数据使用情况(结果显示在 TextView (TextView) findViewById(R.id.data_seller) 上)。我将此电话命名为服务器电话:

关于使用热点连接互联网的手机,我计算了 Wifi 的总数据使用量。我将此手机命名为客户端手机

我认为两者的结果或多或少是相同的(更准确地说,两个 runnable 中的 res[0]+res[1] 或多或少相等),因为客户端电话正在使用服务器热点电话。但是,结果完全不同(客户端电话的数据使用量是服务器电话的 50 倍)。你知道为什么吗?

0 投票
0 回答
141 浏览

android - Android - 将 NetworkStatsManager 接收和传输的字节重置为零

有没有办法使用 重置所有应用程序的接收和传输字节NetworkStatsManager

我正在使用以下代码来获取设备上安装的应用程序的网络使用情况。

我的问题是我想将应用程序的所有网络使用量重置为零。这样做有什么解决方法吗?

任何帮助深表感谢。提前致谢。

0 投票
1 回答
113 浏览

android - 是否可以在应用安装日期之前查询网络使用数据

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

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

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

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

NetworkStatsManager 是这样获得的:

并在此处获得 NetworkStats 对象:

这就是我迭代桶的方式

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

0 投票
3 回答
1177 浏览

android - Get mobile data usage in Android 10

I'm trying to make a network usage monitor app, which shows mobile data usage history to the user. For this I'm using Usage access to get accurate data usage stats from NetworkStatsManager. But this no longer works in Android 10.

I'm using NetworkStatsManager.querySummaryForDevice which requires subscriber Id, which earlier I was able to obtain using TelephonyManager.getSubscriberId.

But the getSubscriberId is now not working in Android 10 as it requires READ_PRIVILEGED_PHONE_STATE which third-party apps cannot have.

Any ideas on how to make it work? I understand the restrictions for getting subscriber Id, but I don't really care about the subscriber Id as long as I get the mobile data usage, for which I have enough permissions.

0 投票
0 回答
346 浏览

android - 如何在不使用 API 22 或更低版本定期监控的情况下获取当月的移动数据使用情况?

我需要知道自本月初以来设备使用了多少移动数据,我知道如何监控设备,但这有两个问题:

1 - 我正在使用的设备性能非常低,网络也很差,并且其中还有其他持续运行的服务以及我的应用程序在启动时需要做的很多事情,所以它已经处于极限.

2 - 我需要获取我的应用程序之前存在的使用信息(它不是公共应用程序,它是商业应用程序,我们有自己的设备和应用程序)。

我知道我可以在设备的设置中看到这些数据并选择“数据使用情况”,但我需要以编程方式执行此操作,而这正是我需要的,就像我的应用程序进入设置并获取数据使用信息。

我已经搜索过TrafficStatsNetworkStatsManager。我也在SO周围进行了搜索,看到了很多类似的问题,但它们并不像我的那么具体,而且它们要么未解决,要么在应用程序本身中使用监控,要么使用 API 23+。我已经搜索过的一些问题:

如何以编程方式检查移动数据使用情况?- 这只是给我设备启动以来的数据。

如何通过wifi和移动数据获取android上的数据使用情况?- 告诉如何按应用程序拆分信息。

如何在android中获取过去1个月的数据使用情况?- 大约是上个月,不是当月,目前还没有回答。(如果可以的话,也帮助这个家伙,其他人在搜索这个问题时也会遇到他的问题)。

如何在 Android 上查找每个应用程序的数据使用情况?- 这是关于监控的,我做不到。

How to get the stats of total mobile data used in given time period (eg, last month) by all the application in android - Here CommonsWare 's answer告诉这是不可能的,但这个答案是五年前的,所以我我希望事情发生了变化。

如何获取 1 个月的 GPRS 移动数据使用量?- 虽然这似乎是一个很好的解决方案,但我正在使用 API 级别 19,我可以使用的最高级别是 API 22,即设备的 API。

我能得到的答案越接近 rajeesh,但他使用的类 - NetworkStats - 是在 API 23 上实现的,所以我不能使用它。

我还在Alexandra Golovatyuk 的博客中找到了一些关于读取系统文件以获取信息的内容,但它确实存在一些问题,比如它没有显示如何获取时间信息,所以虽然我会使用数据,但我不会不知道是哪个时期的。尽管我可以 root 大部分设备并安装系统应用程序,但我更愿意避免使用它,而且我还有一些其他设备型号无法 root。但是如果没有其他方法,这种方法也会有所帮助。

0 投票
1 回答
125 浏览

java - 我得到了我在 networkstatsmanager.querydetailsforuid() 方法中提供的不同的 startTimestamp 和 endtimestamp。如何解决?

获取我提供的不同开始时间和结束时间NetworkStatsManager.queryDetailsForUid 这是我的代码片段:

我想在开始时间和结束时间的间隔内获取应用程序数据使用情况我正在调用方法并以毫秒为单位从日历传递开始日期和结束日期,但在调用queryDetailsForUid()它之后显示一些不同的时间:

这是方法:

这是日志输出:

0 投票
0 回答
361 浏览

android - Android TelephonyManager 订阅者 ID()

我正在使用 android TelephonyManager 获取订阅者 ID(使用 getSubscriberId() 方法)

但基于新的 android 权限更新,他们在下面的声明中提到

getSubscriberId 在 API 级别 1 中添加

公共字符串getSubscriberId ()

如果调用应用的目标 SDK 为 API 级别 28 或更低,并且应用具有 READ_PHONE_STATE 权限,则返回 null。

如果调用应用的目标 SDK 为 API 级别 28 或更低且应用没有 READ_PHONE_STATE 权限,或者调用应用的目标 API 级别为 29 或更高,则抛出 SecurityException

但我仍然可以使用android api 级别 24(在 android 模拟器上运行)中的getSubscriberId()获取订阅者 ID。它为订阅者 ID 提供了适当的值

在其他真实设备中是否会出现问题(api level <= 28)。因为没有订阅者 ID,我的应用程序将无法运行

0 投票
1 回答
136 浏览

android - NetworkStats.Bucket (querySummaryForDevice) Android 中的空桶

这是我的代码

我想获得每天的互联网使用情况。该应用程序可以访问数据使用,我还在清单中检查了所需的权限。

这是日志

为什么桶是空的(空)。我是android开发新手,请帮忙。

0 投票
1 回答
62 浏览

java - 无法解析符号“networkStatsManager”[networkStatsManager]

我正在编写一个应用程序的一小部分,该应用程序使用 android 的 networkstatsManager 查找 Uid 的 txBytes。但是,我在尝试使用 networkStatsManager 时遇到错误。Android Studio 不断给我错误“无法解析符号'networkStatsManager'”。我不确定我做错了什么。任何建议将不胜感激。

这是继续给我一个错误的行:networkStats = networkStatsManager.queryDetailsForUid(ConnectivityManager.TYPE_WIFI, "", 0, System.currentTimeMillis(),stat);第 13 行。

这是我的代码: