Не работает метод, открывающий файл в Android
Снова не могу найти ошибку, в этот раз, подозреваю, что я как-то не так прописала путь к файлу, потому что условие if(file.exists() && file.isFile()) никогда не выполняется
Путь:
private String path = Environment.getExternalStorageDirectory().toString() + "/files/";
В манифесте прописано:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Кнопка "открыть файл":
case R.id.action_open:
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Имя файла");
builder.setMessage("Введите имя файла для открытия");
EditText input = new EditText(this); //ввод имени файла
builder.setView(input);
builder.setPositiveButton("Открыть", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
editText.setText("");
String value = input.getText().toString();
filename = value;
File file = new File(path + filename);
if(file.exists() && file.isFile()) {
editText.setText(openFile(filename));
}
else {
Toast.makeText(MainActivity.this, "Файл не существует.", Toast.LENGTH_SHORT).show();
}
}
});
builder.show();
return true;
Метод, открывающий файл:
private String openFile(AppCompatActivity app, String filename) {
StringBuilder text = new StringBuilder();
try {
File file = new File((this.path), filename);
BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
String line;
while ((line=bufferedReader.readLine())!= null) {
text.append(line + "\n");
}
} catch (Exception e) {
e.printStackTrace();
}
return text.toString();
}
Я знаю, что есть Intent.ACTION_OPEN_DOCUMENT, но не понимаю, как с ним работать (если это является решением проблемы, то можно, пожалуйста, ссылку на какой-нибудь пример?) Я не понимаю сам принцип работы - мы при помощи uri однозначно определяем файл, передаем его uri в метод, дальше создается конкретный intent, определяется категория и тип, и все это передается в startActivityForResult(). А затем используется onActivityResult и каким-то образом получается ссылка на файл?