networkstatsmanager

 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
            if(hasPermissionToReadNetworkStats()) {
                Log.e("Info","========222=========");
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {

                    Log.e("Info","========333=========");
                    NetworkStatsManager networkStatsManager = (NetworkStatsManager) getSystemService(NETWORK_STATS_SERVICE);
                    new Thread(new Runnable() {
                        @Override
                        public void run() {
                            NetworkStats.Bucket bucket = null;
            // 获取到目前为止设备的Wi-Fi流量统计
                            try {
                                Log.e("Info","===========444============");
                                bucket = networkStatsManager.querySummaryForDevice(ConnectivityManager.TYPE_WIFI, "", 0, System.currentTimeMillis());
                                Log.e("Info","========555=========");
                            } catch (RemoteException e) {
                                e.printStackTrace();
                            }
                            Total=bucket.getRxBytes() + bucket.getTxBytes();
                            Log.e("Info", "Total: " + Total);
                            Log.e("getRxBytes:", "Total: " + bucket.getRxBytes() );
                            Log.e("getTxBytes:", "Total: " +  bucket.getTxBytes());
                        }

                    }).start();

----------------------------------------------------------------

 private boolean hasPermissionToReadNetworkStats() {
        Log.e("Info","========777=========");
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {

            Log.e("Info","========888=========");
            return true;
        }
        Log.e("Info","========999=========");
        final AppOpsManager appOps = (AppOpsManager) getSystemService(Context.APP_OPS_SERVICE);
        int mode = 0;
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.Q) {
            Log.e("Info","========sss=========");
            mode = appOps.unsafeCheckOpRaw(AppOpsManager.OPSTR_GET_USAGE_STATS,
                    android.os.Process.myUid(), getPackageName());
        }
        Log.e("Info","========10000========="+mode);
        if (mode == AppOpsManager.MODE_ALLOWED) {
            Log.e("Info","========10001=========");
            return true;
        }

        requestReadNetworkStats();
        Log.e("Info","========10002=========");
        return false;
    }
    // 打开“有权查看使用情况的应用”页面
    private void requestReadNetworkStats() {
        Log.e("Info","========10003=========");
        Intent intent = new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS);
        startActivity(intent);
    }

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值