是否有可能以编程方式在Android中获得总应用程序存储空间?

时间:2017-04-12 06:46:16

标签: android

我想创建一个应用来查找“应用”使用的内部存储量,如下图所示?但是,我不确定如何以编程方式计算这个总数。可能吗?

Internal App Storage

3 个答案:

答案 0 :(得分:0)

不确定是否是最佳解决方案,但您应该traverse through folders并累积其大小。应用通常存储在:

Internal/SD card -> Android

答案 1 :(得分:0)

下面的代码很有用

PackageManager pm = getPackageManager();

Method getPackageSizeInfo = pm.getClass().getMethod(
    "getPackageSizeInfo", String.class, IPackageStatsObserver.class);

getPackageSizeInfo.invoke(pm, "com.android.mms",
    new IPackageStatsObserver.Stub() {

    @Override
    public void onGetStatsCompleted(PackageStats pStats, boolean succeeded)
        throws RemoteException {

        Log.i(TAG, "codeSize: " + pStats.codeSize);
    }
});

更多详情here

答案 2 :(得分:0)

您可以查看有关StorageStatsManager.queryStatsForPackage的详细信息

https://developer.android.com/reference/android/app/usage/StorageStatsManager.html#queryStatsForPackage(java.util.UUID,%20java.lang.String,%20android.os.UserHandle)

注意:为您自己的程序包调用此API时不需要权限。但是,请求其他任何软件包的详细信息都需要android.Manifest.permission#PACKAGE_USAGE_STATS权限,这是系统级别的权限,不会授予普通应用程序。声明权限表示您打算使用此API,最终用户可以选择通过“设置”应用程序授予此权限。