ファイルを開こうとすると、アプリがクラッシュします。Android Nougat 以下では動作しますが、Android Nougat ではクラッシュします。システム パーティションからではなく、SD カードからファイルを開こうとしたときにのみクラッシュします。いくつかの許可の問題?
サンプルコード:
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
ログ:
android.os.FileUriExposedException: file:///storage/emulated/0/test.txt が Intent.getData() を介してアプリを超えて公開されました
編集:
Android Nougat を対象とする場合、file://
URI は許可されなくなりました。content://
代わりに URIを使用する必要があります。ただし、私のアプリはルート ディレクトリでファイルを開く必要があります。何か案は?