查看是否有存储卡插入并获得手机内存大小,获取存储路径
查看手机内存大小
import java.io.File; import android.app.Activity; import android.os.Bundle; import android.os.Environment; import android.os.StatFs; import android.text.format.Formatter; import android.widget.TextView; public class MainActivity extends Activity { private TextView storageInfo;//手机内存信息 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); storageInfo = (TextView) findViewById(R.id.storageInfo); //判断SD卡存不存在 String state=Environment.getExternalStorageState(); String sdCardSize; if(Environment.MEDIA_MOUNTED.equals(state)){ //获得SD卡的存储目录 File path=Environment.getExternalStorageDirectory(); sdCardSize=getScardSize(path); }else{ sdCardSize="不存在sd卡"; } //获得手机内部存储目录 File dataFileDir=Environment.getDataDirectory(); String dataSize=getScardSize(dataFileDir); //显示到textView storageInfo.setText("SD卡:"+sdCardSize+"\n手机内部:"+dataSize); } /** * 获得内存存储信息 */ public String getScardSize(File path){ StatFs stat=new StatFs(path.getAbsolutePath());//获得磁盘对象 long count=stat.getBlockCountLong();//获得扇区个数 有时用long出现问题 用返回int的那方法比较稳定 long size=stat.getBlockSizeLong();//获得一个扇区的大小 long avaiSize=stat.getAvailableBlocksLong();//获得可用的扇区数量 //总空间 按文件大小的格式 String totalMemory=Formatter.formatFileSize(this, size*count); //可用空间 String availableMemory=Formatter.formatFileSize(this,size*avaiSize); return "总空间:"+totalMemory+"\n可用空间:"+availableMemory; } }
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 文件里面的写的权限
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> 文件的创建和删除权限