当我尝试通过Intent打开我选择的文件时,出现以下错误:
java.io.FileNotFoundException: /document/primary:Android/data/com.oli.myapp/Files/test.xml: open failed: ENOENT (没有这个文件或目录)
我不知道为什么会发生这种情况,因为我已经选择了该文件。这是我的代码:
文件选择:
Intent chooseFileXML = new Intent(Intent.ACTION_GET_CONTENT);
Uri uri = Uri.parse(new Helper(FunctionsActivity.this).getPathToAppFolder());
chooseFileXML.setDataAndType(uri, "text/xml");
Intent intentXML = Intent.createChooser(chooseFileXML, getString(R.string.importXMLDatei));
startActivityForResult(intentXML, REQUEST_CODE_IMPORT_XML_FILE);
获取代码:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
switch (requestCode){
case REQUEST_CODE_IMPORT_XML_FILE:
if(resultCode == RESULT_OK){
String Fpath = data.getDataString();
File file = new File(Fpath);
Intent intent = new Intent(FunctionsActivity.this, CreateActivity.class);
intent.setAction(Intent.ACTION_DEFAULT);
intent.setData(Uri.parse(file.toURI().toString()));
startActivity(intent);
}
break;
}
}
编辑:
Uri uri = data.getData();
DocumentFile documentFile = DocumentFile.fromSingleUri(this, uri);
String type = documentFile.getType();
if(type.equals("text/xml")){
try {
InputStream inputStream = getContentResolver().openInputStream(uri);
if(inputStream == null){
throw new Exception();
}
BufferedReader r = new BufferedReader(new InputStreamReader(inputStream));
StringBuilder total = new StringBuilder();
String line;
while ((line = r.readLine()) != null) {
total.append(line).append('\n');
}
//Could read the file with no problems
createWithXMLCode(total.toString());
}catch (Exception e){
e.printStackTrace();
//TODO
}
}else{
//TODO
}