今天突然有需求,获取手机外置SD卡路径,但Environment.getExternalStorageDirectory()获取的是内置SD卡路径,外置SD卡的名字会因为厂商,手机型号都不一样。
很蛋疼的是没有找到相关的API,直接获取的。只能想了个方案解决问题。
先上两张图,不同手机型号的。
1获取内部SD卡====>2获取上一级目录======>3获取子目录集合=======>4筛选出符合要求的
代码如下:
package com.example.storagedemo;
import java.io.File;
import android.os.Bundle;
import android.os.Environment;
import android.widget.TextView;
import android.app.Activity;
public class MainActivity extends Activity {
private TextView tv;
StringBuffer buffer;
File innerDir;
File root;
File[] list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView) findViewById(R.id.tv);
innerDir = Environment.getExternalStorageDirectory();
root = innerDir.getParentFile();
list = root.listFiles();
buffer = new StringBuffer();
buffer.append("data目录:" + Environment.getDataDirectory());
buffer.append("\n");
buffer.append("下载缓存目录:" + Environment.getDownloadCacheDirectory());
buffer.append("\n");
buffer.append("外部存储媒体目录:" + Environment.getExternalStorageDirectory());
buffer.append("\n");
buffer.append("android根目录:" + Environment.getRootDirectory());
buffer.append("\n");
for (File file : list) {
if (file.compareTo(innerDir) != 0&&file.canWrite()) {
buffer.append("外接SD卡目录:" + file);
buffer.append("\n");
}
}
tv.setText(buffer);
}
}
看的朋友如果有好的方法,或者我的这个办法哪里不合适,欢迎留言。。。