Android获取不同手机 自身存储和外置SD卡存储路径的解决方案
2017-02-10 10:46
483 查看
最近在给一个应用里面做一个内置的文件管理器,期间遇到一个问题,就是选择不同手机的sd卡存储和手机本身存储。可以在两者之间来回切换,经过一系列测试发现,现在的很多手机厂家定制的手机内存和sd卡内存的路径都不同,用android系统自带的api无法准确获取区分sd卡和手机自身的准确路径,比如再一台手机上获取的手机的路径是/storage/emulated/0。很可能在另外一个手机上用同样的方法获取到的就不是这个路径。
下面给出解决方案,大致思路是:首先获取到手机(设备)中所有的存储路径,包括 手机自身的存储路径,sd卡存储路径,其他存储路径。返回的是一个存放路径的String数组。然后我们对数组进行处理,一般第一位元素arr[0]就是手机自身的存储路径,arr[1]就是外置sd卡的存储路径。
获取到路径了,我们接下来就可以进行其他操作了。
下面是代码
接下来是在ManiActivity中进行调用
运行结果log:
经过与手机自带文件管理器比对,strAllPath[0]为手机自身的储存,strAllPath[1]为我的sd卡存储。已经在oppo r9s ,红米1s,小米2s上测试均可用。
下面给出解决方案,大致思路是:首先获取到手机(设备)中所有的存储路径,包括 手机自身的存储路径,sd卡存储路径,其他存储路径。返回的是一个存放路径的String数组。然后我们对数组进行处理,一般第一位元素arr[0]就是手机自身的存储路径,arr[1]就是外置sd卡的存储路径。
获取到路径了,我们接下来就可以进行其他操作了。
下面是代码
/** * 得到所有的存储路径(内部存储+外部存储) * * @param context * @return */ public static String[] getAllSdPaths(Context context) { Method mMethodGetPaths = null; String[] paths = null; //通过调用类的实例mStorageManager的getClass()获取StorageManager类对应的Class对象 //getMethod("getVolumePaths")返回StorageManager类对应的Class对象的getVolumePaths方法,这里不带参数 StorageManager mStorageManager = (StorageManager)context .getSystemService(context.STORAGE_SERVICE);//storage try { mMethodGetPaths = mStorageManager.getClass().getMethod("getVolumePaths"); paths = (String[]) mMethodGetPaths.invoke(mStorageManager); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return paths; }
接下来是在ManiActivity中进行调用
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); strAllPath = FilesUtils.getAllSdPaths(this); initView();// 控件初始化 setLayout();// 视图切换 moblieStorgePath = strAllPath[0];// 手机 sDStorgePath = strAllPath[1];// sd卡 Log.e("moblieStorgePath", moblieStorgePath + ""); Log.e("strAllPath", strAllPath.length + ""); Log.e("strAllPath[0]", strAllPath[0]); Log.e("strAllPath[1]", strAllPath[1]);
运行结果log:
经过与手机自带文件管理器比对,strAllPath[0]为手机自身的储存,strAllPath[1]为我的sd卡存储。已经在oppo r9s ,红米1s,小米2s上测试均可用。
相关文章推荐
- Android判断是否存在外置SD卡(获取手机所有存储设备的路径)
- Android开发获取多个存储空间的路径(内置SD卡以及外置SD卡)
- Android4.4+ 外置SD卡不能写入 获取外置SD卡路径解决方案
- Android获取机身存储、内置SD卡与外置TF卡路径
- Android 内部存储(外置SD卡)和扩展存储卡(TF卡)路径的获取
- android 不同手机外置SD卡路径不同
- android 手机获取外置SD卡路径
- Android获取手机内置外置存储文件列表,完美解决各种rom各种系统版本的获取方式不用的问题
- 获取Android手机中SD卡存储信息
- Android 最新获取手机内置存储大小,SD卡存储空间大小方法
- Android获取内置、外置以及OTG等方式挂载的存储设备路径
- 获取手机和SD卡路径(Android 4.0以上验证过)
- Android_获取sd卡空间、手机内部存储空间
- android获取内置和外置SD卡路径
- android两行代码获取内外置sd卡路径
- android 获取手机SD卡和手机的内部存储
- Android手机外置SD卡(TF卡)的获取方法
- android 获取外置SD卡的路径(非挫版)
- 获取Android手机中SD卡存储信息 获取剩余空间
- 获取Android手机中SD卡存储信息 获取剩余空间