問題タブ [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_WIFI を TYPE_MOBILE に置き換えると、結果は常に 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, String subscriberId,long startTime, long endTime, int uid) このメソッドは常に古いデータを返します。NetworkstatsManagerAPIを使用して更新されたデータを取得するにはどうすればよいですか?

0 投票する
1 に答える
1288 参照

android - NetworkStatsManager.queryDetailsForUid が TrafficStats と「同じ」値を取得しない

ネットワークインターフェイスと特定のアプリケーション(pex Chrome)のトラフィックを測定するために、新しいNetworkStatsクラスを比較していますTrafficStats

デバイスの起動以降TrafficStatsの値があるため、実行しているテストは次のとおりです。

  1. 電話を再起動します。
  2. クロムを開きます。
  3. 10 MB のデータをダウンロード (WiFi 経由)。

で取得したデータTrafficStatsは次のとおりです。

私はアクセス許可を付与し、NetworkStats取得した値は次のとおりです。

データを取得するコードNetworkStatsは次のとおりです。

どこgetDataFromBucketにある:

バケットは 2 時間からあるとどこかで読んだので、次のコードを追加しました。

しかし、 とにはバケットがないためwifiBucketForApp、 chrome のデータはまだ 0 です。mobileBucketForApp

bootTime1日の始まり (私の国では 18:30) に設定すると、次のようになります。

Chrome アプリTrafficStatsからデバイスを起動して以来、同じ値を取得していない理由を知っている人はいますか?NetworkStatsManager