在进行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); } }
