我正在向用户提供文件浏览器以选择文件。在onActivityResult上我得到文件路径为 - /file/sdcard/Android/data/com.coca_cola.android.conferenceapp/cache/Conference/export.txt。当我尝试在此创建文件对象时,我无法创建。当我删除/ file /并在sdcard / Android / data / com.coca_cola.android.conferenceapp / cache / Conference / export.txt上创建文件对象时,它就会被创建。但我不能硬编码从文件路径中删除/ file /,因为在其他设备上它将提供一些其他路径。下面是代码
private void readContactFromFile(String path) {
StringBuilder text = new StringBuilder();
try {
String st = "/file/sdcard/Android/data/com.coca_cola.android.conferenceapp/cache/Conference/export.txt";
File file = new File(st);
if (file.exists()) {
Log.v("TTT", "file exist");
}
Log.v("TTT", file.toString());
BufferedReader br = new BufferedReader(new FileReader(file));
String line;
while ((line = br.readLine()) != null) {
text.append(line);
Log.i("Test", "text : " + text + " : end");
text.append('\n');
}
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
我正在OnActivityResult上获得路径
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
switch (requestCode) {
case REQUEST_PICK_FILE:
Uri uri = data.getData();
String path = data.getData().getPath();
Log.v("PATH", path);
readContactFromFile(path);
break;
}
}
}
这就是我要求打开文件浏览器的方式
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("*/*"); //all files
//intent.setType("text/xml"); //XML file only
intent.addCategory(Intent.CATEGORY_OPENABLE);
try {
startActivityForResult(Intent.createChooser(intent, "Select a File to Upload"), REQUEST_PICK_FILE);
} catch (android.content.ActivityNotFoundException ex) {
// Potentially direct the user to the Market with a Dialog
Toast.makeText(this, "Please install a File Manager.", Toast.LENGTH_SHORT).show();
}
如何获得完美路径或如何删除此问题? 在此先感谢
答案 0 :(得分:1)
由于不同设备上的路径不同,您应该使用框架api为您检索合适的路径。
答案 1 :(得分:0)
不使用硬编码的字符串路径,而是使用Environment类
获取路径File file=new File(String.valueOf(Environment.getExternalStorageDirectory())+"YOUR_REQUIRED_FILE_PATH");
不会将设备推迟到设备。 希望这会有所帮助:)