Java Android 6.0中的NetworkStats-权限问题

Java Android 6.0中的NetworkStats-权限问题,java,android,Java,Android,我正在尝试开发一个可以从特定软件包中获取网络统计信息的应用程序,但我遇到了以下问题: 当我尝试使用Android 6.0(棉花糖)的NetworkStats库时,我遇到了以下异常: NetworkStats:用户10412和当前进程都没有 android.permission.READ\ u网络\使用\历史记录 代码如下: try { TelephonyManager tm;String subscriberID; NetworkStatsManager networkStat

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


  • 当我尝试使用Android 6.0(棉花糖)的NetworkStats库时,我遇到了以下异常:
  • NetworkStats:用户10412和当前进程都没有 android.permission.READ\ u网络\使用\历史记录

    代码如下:

    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());
    }
    
  • 我如何在以前版本的Android(5.0和4.0)中获得NetworkStats的功能?有图书馆吗

  • READ\u NETWORK\u USAGE\u HISTORY
    权限仅授予系统应用程序。因此,除非您使用的是根手机,否则您将无法使用它。唯一的解决方法是使用API级别8之后提供的功能。

    READ\u NETWORK\u USAGE\u HISTORY
    权限仅授予系统应用程序。因此,除非您使用的是根手机,否则您将无法使用它。唯一的解决办法是使用API 8级之后的版本。

    Mmm。。。在互联网上做了一点研究之后,我放弃了使用这个Android原生库。我已经设法让它工作,但有必要让用户通过“用户数据访问”选项(位于设置应用程序下)启用它。然后我尝试向用户启动此应用程序,以便用户可以自己启用,但这在许多设备上都不起作用。请参阅此链接:


    嗯。。。在互联网上做了一点研究之后,我放弃了使用这个Android原生库。我已经设法让它工作,但有必要让用户通过“用户数据访问”选项(位于设置应用程序下)启用它。然后我尝试向用户启动此应用程序,以便用户可以自己启用,但这在许多设备上都不起作用。请参阅此链接:


    “当我尝试使用Android 6.0(棉花糖)的NetworkStats库时,我遇到了这个例外”——请提供一个示例,包括您尝试使用NetworkStats的代码以及崩溃的完整堆栈跟踪。“在以前版本的Android(5.0和4.0)中,我如何获得NetworkStats的功能?是否有任何库?”——
    TrafficStats
    就Android SDK而言,与您将获得的最接近。请求非站点资源,如库,在这里被认为是离题的。“当我尝试使用Android 6.0(棉花糖)的NetworkStats库时,我得到了这个例外”——请提供一个示例,包括您尝试使用
    NetworkStats
    的代码和崩溃的完整堆栈跟踪。“在以前版本的Android(5.0和4.0)中,我如何获得NetworkStats的功能?是否有任何库?”——
    TrafficStats
    就Android SDK而言,与您将获得的最接近。要求非现场资源,如图书馆,在这里被认为是离题的。嗯。。。在互联网上做了一点研究之后,我放弃了使用这个Android原生库。。。在互联网上进行了一点研究之后,我放弃了使用这个Android本机库。我让它也在我的三星note 3上工作,还使用了“用户数据访问”方法,并使用NetworkStatsManager类(你知道,迭代存储桶等),但突然(在一次轻微的rom升级之后),它不再工作了:-(我的应用程序不再列在“用户数据访问”列表中了:-(很遗憾,这个库没有以我们需要的方式完全可用。在我的开发者之旅中,我最终使用了TrafficStats库(),因为它可以从API 8获得,所以我不得不设置一个警报来不断记录这些统计数据。)(因为这些值表示上次启动时的数据使用情况)。我没有找到任何其他可靠且受支持的方法。嗯……我也会放弃并改用另一种方法,但在我的情况下,它在过去工作得完美无缺,根据官方文件,它应该在sdk>=23中工作。。这让我感到有点沮丧,但也是找到解决方案的动力。我在这么长的时间里提出了一个问题erday(),也许社区中的某个人有一个帮助想法。太好了。希望有人能帮我(Y)!我也让它在我的三星note 3上工作,也使用了“用户数据访问”方法,再加上使用NetworkStatsManager类(你知道,迭代存储桶等),但突然(在一个小rom升级之后),它不再工作了:-(我的应用程序不再列在“用户数据访问”列表中了:-(很遗憾,这个库没有以我们需要的方式完全可用。在我的开发者之旅中,我最终使用了TrafficStats库(),因为它可以从API 8获得,所以我不得不设置一个警报来不断记录这些统计数据。)(因为这些值表示上次启动时的数据使用情况)。我没有找到任何其他可靠且受支持的方法。嗯……我也会放弃并改用另一种方法,但在我的情况下,它在过去工作得完美无缺,根据官方文件,它应该在sdk>=23中工作。。这让我感到有点沮丧,但也是找到解决方案的动力。我在这么长的时间里提出了一个问题erday(),也许社区里有人有帮助的想法。太好了。希望有人能帮助你!