我想获得设备的(内部和外部)存储空间的大小。我有以下的类似设备存储: 内部存储, SD卡, 电话存储, 我能够获得内部和SD卡存储,但是没能获得手机存储空间。请帮忙。Android每个存储上有多少可用空间
-2
A
回答
1
请参阅this question,您可以同时获得内部存储空间和SD卡可用空间。
编辑:从链接的问题:
public long freeMemory() {
StatFs statFs = new StatFs(Environment.getDataDirectory().getAbsolutePath());
long free = (statFs.getAvailableBlocks() * statFs.getBlockSize());
return free;
}
要转换为人类可读的格式(MB,GB等)见喜欢的问题。
通常情况下(在中国电话上)内部存储分为两部分,一部分仅用于应用和应用数据,另一部分安装为SD卡,用于照片,媒体等。一个SD卡插槽,您也可以访问。
+0
根据你的链接,它不给我正确的答案,我想知道。 – 2015-02-06 10:37:16
+0
查看我更新的答案。 – JonasCz 2015-02-08 10:13:06
0
public static long getAvailableStorage() {
File path = StorageUtils.getCacheDirectory(ApplicationController.getInstance(), true);
long blockSize = 0;
long availableBlocks = 0;
StatFs stat = new StatFs(path.getPath());
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
blockSize = stat.getBlockSizeLong();
availableBlocks = stat.getAvailableBlocksLong();
} else {
blockSize = stat.getBlockSize();
availableBlocks = stat.getAvailableBlocks();
}
return availableBlocks * blockSize;
}
public static File getCacheDirectory(Context context,
boolean preferExternal) {
File appCacheDir = null;
String externalStorageState;
try {
externalStorageState = Environment.getExternalStorageState();
} catch (NullPointerException e) { // (sh)it happens (Issue #660)
externalStorageState = "";
}
if (preferExternal && MEDIA_MOUNTED.equals(externalStorageState)
&& hasExternalStoragePermission(context)) {
appCacheDir = getExternalCacheDir(context);
}
if (appCacheDir == null) {
appCacheDir = context.getCacheDir();
}
if (appCacheDir == null) {
String cacheDirPath = "/data/data/" + context.getPackageName()
+ "/"+DOWNLOAD_SUB_DIRECTORY+"/";
appCacheDir = new File(cacheDirPath);
}
return appCacheDir;
}
private static File getExternalCacheDir(Context context) {
File dataDir = new File(new File(
Environment.getExternalStorageDirectory(), "Android"), "data");
File appCacheDir = new File(
new File(dataDir, context.getPackageName()), DOWNLOAD_SUB_DIRECTORY);
if (!appCacheDir.exists()) {
if (!appCacheDir.mkdirs()) {
L.w("Unable to create external cache directory");
return null;
}
try {
new File(appCacheDir, ".nomedia").createNewFile();
} catch (IOException e) {
}
}
return appCacheDir;
}
相关问题
- 1. iPhone上的应用程序存储空间有多少空间?
- 2. 以下占用多少存储空间?
- 3. 我可以在WP7上访问多少存储空间?
- 4. Android SD卡上有多少空间可用?
- 5. 在哪些平台上线程本地存储空间有限并有多少可用空间?
- 6. 检查有多少sharedObject空间可用
- 7. 每个事务有多少个存储过程调用?
- 8. iPhone上的应用程序有多少磁盘空间可用?
- 9. ListView可以存储多少个项目?
- 10. Parcel可以存储多少个数据?
- 11. Android没有足够的存储空间
- 12. 与RDBMS相比,使用CouchDB时需要多少存储空间?
- 13. LucidWorks搜索引擎索引占用多少存储空间?
- 14. Android测试存储空间
- 15. Opendedup不会减少存储空间
- 16. 有没有办法找出你的应用在WP7上使用的隔离存储空间有多少?
- 17. 在mysql中使用varchar(100)声明有多少实存储空间?
- 18. 您需要多少内存来存储每个可能的电话号码?
- 19. YAML每个缩进多少个空格?
- 20. 是应用程序缓存存储空间是有限的每个域
- 21. s3中可以存储多少个文件有限制吗?
- 22. MySQL全文索引消耗多少额外存储空间?
- 23. 这个tty上的标签有多少空间
- 24. 对spring-data-cassandra存储库有多个密钥空间支持?
- 25. 每天创建多少个存储过程(转换日期时间的问题)?
- 26. jQuery.data - 我可以存储多少数据
- 27. Python:列表的每个元素需要多少空间?
- 28. 缓存存储中每个密钥可以存储的最大数据/ URL的大小是多少?
- 29. 如何确定Qt中的驱动器上有多少可用空间?
- 30. 堆栈上分配多少空间
内部存储是手机存储。另外...这甚至不与编程有关。 – 2015-02-06 10:16:26
实际上,手机存储分为两部分:内置和电话存储在我的micromax设备中。 – 2015-02-06 10:17:09
我猜你的手机不支持SD卡...?在这种情况下...可能...您称为“手机存储”的其他存储将被安装为SD卡。 – 2015-02-06 10:20:58