Я решил проблему, основываясь на предложении CommonWare об использовании Intent
(см. Выше). Однако у меня действительно было несколько проблем с Uri
путями, и мне нужно было включить использование FileProvider
для обработки внутреннего пути к файлу при создании Uri, используемого в Intent.
Я предоставил код, который я используется для построения моего пути Uri, который был передан в Intent (обернутый в метод openFile(Uri uri)
. Если это помогает увидеть полный контекст того, как я использовал Intent, вы можете увидеть его здесь: ( Зачем Android Повреждение намерения открытия файла при открытии изображения? ).
Функция openFile (), обрабатывающая фактическое намерение:
<- language-all : lang- java ->
private void openFile(Uri uri){
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(uri);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivityForResult(intent, 2);
}
TableRow onClick()
, создающий Uri
из значения TableRow Uri создается через FileProvider, начиная с вызовов класса File.
row.setOnClickListener(v -> {
TableRow tablerow = (TableRow) v;
TextView sample = (TextView) tablerow.getChildAt(1);
String result = sample.getText().toString();
File filePaths = new File(getFilesDir().toString());
File newFile = new File(filePaths, result);
Uri contentUri = getUriForFile(getApplicationContext(), "com.mydomain.fileprovider", newFile);
openFile(contentUri);
});