如何以编程方式访问特定应用程序的数据使用设置



我正在开发一个需要下载大量数据的Android应用程序。

我想测量我的应用程序在特定时间段(比如一个月)的数据流量。

此选项位于"系统设置"->"数据使用情况"中。

  1. 有什么方法可以通过编程方式访问此设置吗
  2. 我可以使用一些android libs来获取流量吗

我知道TrafficStats类,但我无法获得特定时间段的流量,当我启动设备时,这些数据会丢失。

  1. 有什么方法可以通过编程方式访问此设置吗

请尝试以下代码:

public boolean invokeMethod(String methodName, Object[] args) throws Exception {
    ConnectivityManager mcm = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
    Class ownerClass = mcm.getClass();
    Class[] argsClass = null;
    if (args != null) {
        argsClass = new Class[1];
        argsClass[0] = args.getClass();
    }
    Method method = ownerClass.getMethod(methodName, argsClass);
    return (Boolean)method.invoke(mcm, args);
}
public Object invokeBooleanArgMethod(String methodName, boolean value) throws Exception {
    ConnectivityManager mcm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    Class ownerClass = mcm.getClass();
    Class[]  argsClass = new Class[1];
    argsClass[0] = boolean.class;
    Method method = ownerClass.getMethod(methodName,argsClass);
    return method.invoke(mcm, value);
}
/* use these two method like these */
Object[] arg = null;
try {
    boolean isMobileDataEnable = invokeMethod("getMobileDataEnabled", arg);
    if(!isMobileDataEnable){
        invokeBooleanArgMethod("setMobileDataEnabled", true);
    }
} catch (Exception e) {
    e.printStackTrace();
}

此外,在AndroidManifest.xml中,您需要添加

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
  1. 我可以使用一些android libs来获取流量吗

您可以通过TrafficStats为所有进程设置警报或线程服务,以定期获取流量。如果你想得到每个流程的流量,我想你可以看到这个答案。

相关内容

  • 没有找到相关文章

最新更新