在进行Android手机APP开发的时候,绝对会少不了与存储打交道,而其中的手机存储空间大小,可用存储空间大小等相关参数是必须的。为了保证数据存储,所以就必须要在之前确认可用空间足够使用,以下为获取Android手机存储空间相关信息的核心代码:
import cn.guyouda.Demo;
import java.io.File;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.os.StatFs;
import android.app.Activity;
import android.text.format.Formatter;
import android.view.Menu;
import android.widget.TextView;
public class MainActivity extends Activity {
@SuppressWarnings("deprecation")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
File path = Environment.getExternalStorageDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize;
long totalBlocks;
long availableBlocks;
//由于JELLY_BEAN_MR2之前的版本和之后的版本获取方式有差异,所以进行判断,确保能够在所有版本手机上正确运行
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2){
blockSize = stat.getBlockSizeLong(); //每个存储块大小,单位:字节
totalBlocks = stat.getBlockCountLong(); //总共的存储块数量
availableBlocks = stat.getAvailableBlocksLong();//可用的存储块数量
}
else{
blockSize = stat.getBlockSize();
totalBlocks = stat.getBlockCount();
availableBlocks = stat.getAvailableBlocks();
}
TextView tv = (TextView) findViewById(R.id.tv); //通过界面的一个TextView显示
tv.setText("总共存储空间大小:"+formatSize(availableBlocks * blockSize)+"可用存储空间大小:"+formatSize(availableBlocks * blockSize));
}
//将B转换为MB,然后再转换为字符串
private String formatSize(long size) {
return Formatter.formatFileSize(this, size);
}
}