android.os.FileUriExposedException: file: ///storage/emulated/0/test.txt exposto além do aplicativo por meio de Intent.getData ()

O aplicativo está travando quando estou tentando abrir um arquivo. Funciona abaixo do Android Nougat, mas no Android Nougat ele trava. Ele só trava quando tento abrir um arquivo do cartão SD, não da partição do sistema. Algum problema de permissão?

Código de amostra:

File file = new File("/storage/emulated/0/test.txt");
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(file), "text/*");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent); // Crashes on this line

Registro:

android.os.FileUriExposedException: file: ///storage/emulated/0/test.txt exposto além do aplicativo por meio de Intent.getData ()

Editar:

Ao segmentar o Android Nougat,file:// URIs não são mais permitidos. Devemos usarcontent:// URIs em vez disso. No entanto, meu aplicativo precisa abrir arquivos nos diretórios raiz. Alguma ideia?

questionAnswers(19)

yourAnswerToTheQuestion