次の手順を実行する必要があります。
- ユーザーがファイルを選択できるようにする (任意の種類のファイル)
- 後でファイルにアクセスするための永続的な参照を取得するか、内部ストレージにコピーします。
最初のものは本当に簡単です。Intent.ACTION_GET_CONTENT を使用してファイルを取得する際に問題はありません。ファイルの MimeType も取得できます。しかし、私はコピーすることはできません。
FileInputStreamを使用してコピーしようとしましたが、明らかに許可がありません。誰かが私を助けてくれることを本当に願っています。
権限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" />
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
インテントコール
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("*/*");
intent.addCategory(Intent.CATEGORY_OPENABLE);
if ( intent.resolveActivity(getPackageManager()) != null) {
startActivityForResult(intent, REQUEST_FILE_GET);
}
ファイルのコピーに失敗しました
FileInputStream in = (FileInputStream) getContentResolver().openInputStream( data.getData());
FileOutputStream out = new FileOutputStream( "copy.jpg ");
FileChannel inChannel = in.getChannel();
FileChannel outChannel = out.getChannel();
inChannel.transferTo(0, inChannel.size(), outChannel);
in.close();
out.close();
エラー:android.system.ErrnoException: open failed: EROFS (Read-only file system)