私のアプリケーションからサーバーにファイルをアップロードしようとしています。ユーザーは、内部ストレージからファイルを添付することができます。しかし、Nougatの電話機から得られる経路は、標準/storage/emulated/0/...
とはいくつか異なっています。いくつかの携帯電話で私はexternal_files/...
を取得し、他の人はroot_files/storage/999/....
を取得します。この場合、私はファイルの正しいパスを取得していません。このシナリオはどのように扱いますか?ファイルを添付してサーバーにアップロードする - Android Nougat
マイコード:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
Uri selectedImageUri = data.getData();
String filePath = data.getData().getPath();
File sourceFile = new File(fileFields.get(i).getFileName());
FileInputStream fileInputStream = new FileInputStream(sourceFile);
}
}
私に例を教えていただけますか?私は 'ContentResolver'を使用しようとしましたが、' cursor.moveToFirst() 'で' NPE'を取得します。 –
@SahanaPrabhakar:私の答えは 'Cursor'を伴わない。私は 'openInputStream()'を呼び出すと言った。 'openInputStream()'は 'Cursor'を返しません。 'openInputStream()'は 'InputStream'を返します。したがって、 'getContentResolver()。openInputStream(selectedImageUri)'はあなたに 'Uri'によって識別される内容の' InputStream'を与えます。 – CommonsWare