2015.5.9安卓笔记之sd卡和settings应用

来源:互联网 发布:中文域名没人用 编辑:程序博客网 时间:2024/06/05 10:53
1.默认状态下,读取sd卡不需要添加任何权限,往sd卡写入数据则需在AndroidManifest里面添加WRITE_EXTERNAL_STORAGE权限.

2.在应用SD卡时,最好判断SD卡是否可用:
Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState());

3.获得sd卡所在目录: Environment.getExternalStorageDirectory();

4.掌握settings源码分析,注意两个快捷键操作:Ctrl+T:寻找方法   Ctrl+F查找

5.获得sd卡和手机内存大小:
File path=Environment.getExternalStorageDirectory();//获得sd卡目录
        StatFs stat=new StatFs(path.getPath());
        long blockSize=stat.getBlockSize();//得到硬盘中每一块的大小
        long totalBlocks=stat.getBlockCount();//得到总的块数
        long availableBlocks=stat.getAvailableBlocks();//得到可用空间的块数
        
        String totalStr=Formatter.formatFileSize(this, totalBlocks*blockSize);//将得到的大小格式化为多少(MB/GB/TB/PB)单位的
        String availStr=Formatter.formatFileSize(this, availableBlocks*blockSize);
        String tag="MainActivity";
Log.i(tag, totalStr);
Log.i(tag, availStr);
        tv.setText("SD卡总内存:"+totalStr+"\n"+"SD卡可用内存:"+availStr+"\n"+getRomSpaceInfo());
    }
    
    public String getRomSpaceInfo(){
      File path=Environment.getDataDirectory();//获得手机内存目录
         StatFs stat=new StatFs(path.getPath());
         long blockSize=stat.getBlockSize();//得到硬盘中每一块的大小
         long totalBlocks=stat.getBlockCount();//得到总的块数
         long availableBlocks=stat.getAvailableBlocks();//得到可用空间的块数
         
         String totalStr=Formatter.formatFileSize(this, totalBlocks*blockSize);
         String availStr=Formatter.formatFileSize(this, availableBlocks*blockSize);
         return "手机内存总空间为:"+totalStr+"\n手机内存可用空间为:"+availStr;
    }

0 0