查看是否有存储卡插入并获得手机内存大小,获取存储路径

查看手机内存大小

 

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"/>  文件的创建和删除权限

posted @ 2016-08-07 11:14  ts-android  阅读(283)  评论(0编辑  收藏  举报