Android开发中如何获取外置TF卡的路径

来源:互联网 发布:兄弟连it教育 编辑:程序博客网 时间:2024/03/28 21:30
Android获取外部SDcard的官方调用是
Environment.getExternalStorageDirectory()

但是根据不同机型,是有不同的结果的。
如果手机支持TF卡扩展,并且本身没有大容量存储,比如说HTC老款手机 G3之类的,那么获取到的是TF卡的路径。这是对的。
如果手机本身有大容量存储,不论手机是否支持TF卡扩展,比如现在HTC系列高端手机One X,或者920 butterfly系列,那么获取到的是大容量存储的路径。

也就是说,如果手机本身具有大容量存储,又支持TF卡扩展,通过这条命令是无法获取到TF卡信息的。
我查了半天,没有看到明确获取到扩展存储的API方法,如果有,请你告诉我,谢谢。(cst05001 at 狗妹儿)

那么怎么解决这个问题呢。网上有人说用/sdcard/extSdCard路径之类,这是不对的。因为不同的ROM,对外部存储的挂载点是会不一样的。比如三星国行,挂载点是/Storage/extSdCard 。

这是我从系统角度想到的解决办法,不用越狱,不用权限。大家可以参考:

  1. try {
  2. Runtime runtime = Runtime.getRuntime();
  3. Process proc = runtime.exec("mount");
  4. InputStream is = proc.getInputStream();
  5. InputStreamReader isr = new InputStreamReader(is);
  6. String line;
  7. String mount = new String();
  8. BufferedReader br = new BufferedReader(isr);
  9. while ((line = br.readLine()) != null) {
  10. if (line.contains("secure")) continue;
  11. if (line.contains("asec")) continue;
  12. if (line.contains("fat")) {
  13. String columns[] = line.split(" ");
  14. if (columns != null && columns.length > 1) {
  15. mount = mount.concat("*" + columns[1] + "\n");
  16. }
  17. } else if (line.contains("fuse")) {
  18. String columns[] = line.split(" ");
  19. if (columns != null && columns.length > 1) {
  20. mount = mount.concat(columns[1] + "\n");
  21. }
  22. }
  23. }
  24. txtView.setText(mount);
  25. } catch (FileNotFoundException e) {
  26. // TODO Auto-generated catch block
  27. e.printStackTrace();
  28. } catch (IOException e) {
  29. // TODO Auto-generated catch block
  30. e.printStackTrace();
  31. }

 



来自为知笔记(Wiz)


0 0