Android设备路径及容量的读取
16lz
2021-01-25
1.android设备上的所有外接设备路径总结:
/***USB外接设备挂载路径*/publicstaticfinalStringUSB_STORAGE="/mnt/usb_storage";/***外置内存卡路径*/publicstaticfinalStringEXTERNAL_SD="/mnt/external_sd";/***内置内存卡路径*/publicstaticfinalStringINTERNAL_SD=Environment.getExternalStorageDirectory().getAbsolutePath();或者可以采用代码读取方法获取所有存储设备的路径,读取方法为:List<String>pathsList=newArrayList<String>();StorageManagerstorageManager=(StorageManager)cxt.getSystemService(Context.STORAGE_SERVICE);try{Methodmethod=StorageManager.class.getDeclaredMethod("getVolumePaths");method.setAccessible(true);Objectresult=method.invoke(storageManager);if(result!=null&&resultinstanceofString[]){String[]pathes=(String[])result;StatFsstatFs;for(Stringpath:pathes){if(!TextUtils.isEmpty(path)&&newFile(path).exists()){statFs=newStatFs(path);if(statFs.getBlockCount()*statFs.getBlockSize()!=0){pathsList.add(path);}}}}}catch(Exceptione){e.printStackTrace();FileexternalFolder=Environment.getExternalStorageDirectory();if(externalFolder!=null){pathsList.add(externalFolder.getAbsolutePath());}}//}returnpathsList.toArray(newString[pathsList.size()]);
2.容量获取方法
longavailableSize=FileUtils.getAvailableSize(path);longusedSize,totalSize;if(path.startsWith(AppContants.USB_STORAGE)){usedSize=MeasurementUtils.measureDirectory(path);totalSize=availableSize+usedSize;}else{totalSize=FileUtils.getTotalSize(path);usedSize=totalSize-availableSize;}其中,MeasurementUtils工具类为从android源码中的com.android.defcontainer包下获得的,如欲使用,请从相应的包下获得并原样复制包名和类到你的应用下;FileUtils工具类的方法为:/***获取指定目录总空间**@parampath*@return*/@SuppressWarnings("deprecation")publicstaticlonggetTotalSize(Stringpath){StatFsstat=newStatFs(path);longblockSize,totalBlocks;//判断手机Android版本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();}longtotalSize=totalBlocks*blockSize;returntotalSize;}/***计算指定目录可用空间**@parampath*@return*/@SuppressWarnings("deprecation")publicstaticlonggetAvailableSize(Stringpath){StatFsstat=newStatFs(path);longblockSize,availableBlocks;//判断手机Android版本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();}//longtotalSize=totalBlocks*blockSize;longavailSize=availableBlocks*blockSize;returnavailSize;}
更多相关文章
- android——OpenGL(2)——gl10方法解析
- [UE4]Android(安卓)打包步骤与keystore生成设置
- Android(安卓)Camera FW到Camera Hal调用流程
- android之VideoView和视频播放View的扩展
- Android动画TweenAnimation的使用方法
- [转]Android应用的权限设置
- android sdcard
- android 5.1 USB调试开关
- 【Android】小白进阶之接口和抽象类的使用