Android читать выбранный файл
Я хочу выбрать файл с телефона и прочитать его. Я использовал намерение выбора файла, но когда я передаю URI из выбранного файла в функцию readTextFromUri2, он продолжает выдавать ошибку "FileNotFoundException", хотя я преобразовал uri в uri.getPath. Как я могу прочитать файл, который я выбираю из телефона Android?
private static final int FILE_SELECT_CODE=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("*/*");
intent.addCategory(Intent.CATEGORY_OPENABLE);
try {
startActivityForResult(
Intent.createChooser(intent, "Select a File to Upload"),
FILE_SELECT_CODE);
} catch (android.content.ActivityNotFoundException ex) {
Toast.makeText(this, "Please install a File Manager.",
Toast.LENGTH_SHORT).show();
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case FILE_SELECT_CODE:
if (resultCode == RESULT_OK) {
// Get the Uri of the selected file
Uri uri = data.getData();
Log.d("TAG", "File Uri: " + uri.toString());
Toast.makeText(this,uri.toString(),Toast.LENGTH_LONG).show();
try {
Toast.makeText(this,readTextFromUri2(uri),Toast.LENGTH_LONG).show();
} catch (IOException e) {
e.printStackTrace();
}
}
break;
}
super.onActivityResult(requestCode, resultCode, data);
}
private String readTextFromUri2(Uri uri) throws IOException{
File file = new File(uri.getPath());
Toast.makeText(this,uri.getPath(),Toast.LENGTH_LONG).show();
FileInputStream inputStream = new FileInputStream(file);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
int i;
try {
i = inputStream.read();
while (i != -1) {
byteArrayOutputStream.write(i);
i = inputStream.read();
}
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
return byteArrayOutputStream.toString();
}