Tenho o seguinte código ...
private void visualizarArquivo(ArquivoEntrada arquivoEntrada) {
try {
String extension = FileUtil.getExtension(arquivoEntrada.getNome());
String name = FileUtil.getName(arquivoEntrada.getNome());
//
File file = File.createTempFile(name, extension, this.getContext().getCacheDir());
Uri fileUri = Uri.fromFile(file);
byte[] dados = this.arquivoEntradaDao.getDadosArquivo(arquivoEntrada);
this.writeFileData(fileUri, dados);
//
IntentUtil.viewFile(this.getContext(), fileUri);
} catch (Exception e) {
System.out.println();
}
}
... com este código eu consigo criar um arquivo temporário e escrever dados no arquivo temporário.
Tudo funciona perfeito e sem erro, até a hora em que a intent (para visualizar o arquivo) é invocada. Quando a intent é invocada, é lançada a exceção abaixo.
android.os.FileUriExposedException: file:///data/user/0/org.jacusoft.android.moneytracker_android/cache/Comprovante_09-09-2020_1609476886446040213969003.pdf exposed beyond app through Intent.getData()
O código para invocar a intente é o seguinte ...
public static void viewFile(Context context, Uri uri) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(uri);
Intent intentChooser = Intent.createChooser(intent, "Choose an application to open with:");
context.startActivity(intentChooser);
}
Como resolver esse problema ?