首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android6.0中的NetworkStats -权限问题

Android6.0中的NetworkStats -权限问题
EN

Stack Overflow用户
提问于 2016-08-16 14:23:18
回答 2查看 1.3K关注 0票数 1

我正在开发一个应用程序,可以从特定的包中获取网络统计数据,但我遇到了以下问题:

  1. 当我尝试使用Android6.0的NetworkStats库(Marshmallow)时,我得到了以下异常:

android.permission.READ_NETWORK_USAGE_HISTORY.:用户10412和当前进程都没有NetworkStats

以下是代码:

代码语言:javascript
复制
try {

    TelephonyManager tm;String subscriberID;
    NetworkStatsManager networkStatsManager;
    NetworkStats networkStats;NetworkStats.Bucket bucket;

    tm = (TelephonyManager) mContext.getSystemService(mContext.TELEPHONY_SERVICE);
    subscriberID = tm.getSubscriberId();
    networkStatsManager = mContext.getSystemService(NetworkStatsManager.class);
    networkStats = networkStatsManager.queryDetailsForUid
            (typeMobile, subscriberID, dtBegin, dtEnd, uidPackage);

    if(networkStats !=null){
        while (networkStats.hasNextBucket()) {
            bucket = new NetworkStats.Bucket();
            networkStats.getNextBucket(bucket);
            Log.d("Bucket RX:",bucket.getUid()+" -" +String.valueOf(bucket.getRxBytes()));
            Log.d("Bucket TX:",bucket.getUid()+" -" +String.valueOf(bucket.getTxBytes()));
        }
    }
}
catch (Exception ex){
    Logger.e(ex.getMessage());
}
  1. 如何在安卓的早期版本(5.0 & 4.0)中获得NetworkStats的功能?有图书馆吗?
EN

回答 2

Stack Overflow用户

发布于 2016-08-16 15:10:40

READ_NETWORK_USAGE_HISTORY权限只授予系统应用程序。所以,除非你使用的是根手机,否则你将无法使用它。唯一的出路是使用TrafficStats,这是从API 8开始提供的。

票数 0
EN

Stack Overflow用户

发布于 2016-08-16 21:03:02

嗯..。在互联网上进行了一些研究之后,我放弃了使用这个Android本地图书馆。我已经设法使它工作,但它的必要,用户通过“用户数据访问”选项(位于Settings App下)启用它。然后我试着向用户启动这个应用程序,这样用户就可以自己启用了,但是这在很多设备上都不起作用。请参阅此链接:

设置意图

在这里输入图像描述

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38977492

复制
相关文章

相似问题

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