Saya tahu jalur absolut dari suatu gambar (katakan misalnya, /sdcard/cats.jpg). Apakah ada cara untuk mendapatkan konten uri untuk file ini?
Sebenarnya dalam kode saya, saya mengunduh gambar dan menyimpannya di lokasi tertentu. Untuk mengatur gambar dalam instance ImageView, saat ini saya membuka file menggunakan path, mendapatkan byte dan membuat bitmap dan kemudian mengatur bitmap dalam instance ImageView. Ini adalah proses yang sangat lambat, alih-alih jika saya bisa mendapatkan konten uri maka saya bisa dengan mudah menggunakan metode ini imageView.setImageUri(uri)
Jawaban:
Coba dengan:
Atau dengan:
sumber
Uri.fromFile
tidak akan bekerja di android 26+, Anda harus menggunakan penyedia fileMEMPERBARUI
Saya memiliki pertanyaan yang sama untuk aktivitas file explorer saya. Anda harus tahu bahwa contenturi untuk file hanya mendukung data mediastore seperti gambar, audio dan video. Saya memberi Anda kode untuk mendapatkan konten gambar uri dari memilih gambar dari sdcard. Coba kode ini, mungkin itu akan berhasil untuk Anda ...
sumber
MediaStore.Images.Media
keMediaStore.Video.Media
, tapi tetap tidak berhasil.// Kode ini berfungsi untuk gambar pada 2.2, tidak yakin apakah ada jenis media lain
sumber
Solusi yang diterima mungkin adalah taruhan terbaik untuk tujuan Anda, tetapi untuk benar-benar menjawab pertanyaan di baris subjek:
Dalam aplikasi saya, saya harus mendapatkan jalur dari URI dan mendapatkan URI dari jalur. Mantan:
Yang terakhir (yang saya lakukan untuk video, tetapi juga dapat digunakan untuk Audio atau File atau jenis konten tersimpan lainnya dengan mengganti MediaStore.Audio (dll) untuk MediaStore.Video):
Pada dasarnya,
DATA
kolomMediaStore
(atau sub-bagian mana pun yang Anda tanyakan) menyimpan path file, jadi Anda menggunakan info itu untuk mencarinya.sumber
OpenableColumns.DISPLAY_NAME & OpenableColumns.SIZE
jika aplikasi pengirim bahkan mengikuti "aturan". Saya menemukan bahwa beberapa aplikasi utama hanya mengembalikan kedua bidang ini dan tidak selalu_data
bidang. Dalam kasus di mana Anda tidak memiliki bidang data yang biasanya berisi jalur langsung ke konten, Anda harus terlebih dahulu membaca konten dan menulisnya ke file atau ke dalam memori dan kemudian Anda memiliki jalur Anda sendiri.Anda dapat menggunakan dua cara ini berdasarkan penggunaan
Uri uri = Uri.parse("String file location");
atau
Uri uri = Uri.fromFile(new File("string file location"));
Saya telah mencoba keduanya dan keduanya berhasil.
sumber
Cara termudah dan kuat untuk membuat Konten Uri
content://
dari File adalah dengan menggunakan FileProvider . Uri yang disediakan oleh FileProvider dapat digunakan juga menyediakan Uri untuk berbagi file dengan aplikasi lain juga. Untuk mendapatkan File Uri dari jalur absolutFile
Anda dapat menggunakan DocumentFile.fromFile (File baru (jalur, nama)), itu ditambahkan dalam Api 22, dan mengembalikan null untuk versi di bawah ini.sumber
Terlambat, tetapi dapat membantu seseorang di masa depan.
Untuk mendapatkan konten URI untuk file, Anda dapat menggunakan metode berikut:
FileProvider.getUriForFile(Context context, String authority, File file)
Ini mengembalikan konten URI.
Lihat ini untuk mempelajari cara mengatur a
FileProvider
sumber
Memperoleh ID File tanpa menulis kode apa pun, hanya dengan perintah CLI adb shell:
sumber
Permission Denial: Do not have permission in call getContentProviderExternal() from pid=15660, uid=10113 requires android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY
:, kecuali Anda root.Lebih baik menggunakan validasi untuk mendukung versi pra Android N, contoh:
https://es.stackoverflow.com/questions/71443/reporte-crash-android-os-fileuriexposedexception-en-android-n
sumber
Anda dapat mencoba cuplikan kode di bawah ini
sumber