Saya mencoba membuka gambar / gambar di aplikasi bawaan Galeri dari dalam aplikasi saya.
Saya memiliki URI gambar (gambar terletak di kartu SD).
Apakah Anda punya saran?
android
image
android-intent
gallery
Michael Kessler
sumber
sumber
Jawaban:
Ini adalah solusi lengkap. Saya baru saja memperbarui kode contoh ini dengan informasi yang disediakan dalam jawaban di bawah ini oleh @mad. Periksa juga solusi di bawah ini dari @ Khobaib yang menjelaskan cara menangani gambar picasa.
Memperbarui
Saya baru saja meninjau jawaban asli saya dan membuat proyek Android Studio sederhana yang dapat Anda checkout dari github dan mengimpor langsung ke sistem Anda.
https://github.com/hanscappelle/SO-2169649
(perhatikan bahwa banyak pilihan file masih perlu dikerjakan)
Pemilihan Gambar Tunggal
Dengan dukungan untuk gambar dari penjelajah file terima kasih kepada pengguna gila.
Memilih Banyak Gambar
Karena seseorang meminta informasi itu dalam komentar dan lebih baik mengumpulkan informasi.
Tetapkan parameter tambahan
EXTRA_ALLOW_MULTIPLE
pada maksud:Dan di cek penanganan Hasil untuk parameter itu:
Perhatikan bahwa ini hanya didukung oleh API level 18+.
sumber
Ini adalah pembaruan untuk kode bagus yang diposting hcpl. tetapi ini bekerja dengan manajer file OI, manajer file astro DAN galeri media juga (diuji). jadi saya kira itu akan bekerja dengan setiap manajer file (ada banyak yang lain dari yang disebutkan?). melakukan beberapa perbaikan pada kode yang ditulisnya.
sumber
else return null;
dalamgetPath(Uri uri)
untukreturn uri.getPath();
dan menyingkirkan pertamafilemanagerstring = selectedImageUri.getPath();
cek. Dengan cara ini, Anda hanya perlu melakukan satu panggilan kegetPath(Uri)
dan mendapatkan jalur kembali (tidak peduli apakah itu Galeri atau pengelola file yang digunakan).Metode hcpl berfungsi sempurna sebelum KitKat, tetapi tidak bekerja dengan API DocumentsProvider. Untuk itu cukup ikuti tutorial Android resmi untuk penyedia dokumen: https://developer.android.com/guide/topics/providers/document-provider.html -> buka dokumen, bagian Bitmap.
Cukup saya menggunakan kode hcpl dan memperluasnya: jika file dengan jalur yang diambil ke gambar melempar pengecualian saya sebut fungsi ini:
Diuji pada Nexus 5.
sumber
dasar dengan kode di atas, saya merefleksikan kode seperti di bawah ini, mungkin lebih cocok:
sumber
Saya melalui solusi dari @hcpl & @mad. solusi hcpl mendukung dengan baik untuk gambar lokal di galeri & mad memberikan solusi yang lebih baik di atas itu - membantu memuat gambar OI / Astro / Dropbox juga. Tetapi di aplikasi saya, saat bekerja di perpustakaan picasa yang sekarang terintegrasi di Galeri Android, kedua solusi gagal.
Saya mencari & menganalisis sedikit & akhirnya datang dengan solusi yang lebih baik & elegan yang mengatasi keterbatasan ini. Terima kasih kepada Dimitar Darazhanski untuk blognya, yang membantu saya dalam hal ini, saya memodifikasi sedikit agar lebih mudah dimengerti. Inilah solusi saya -
Periksa & beri tahu saya jika ada masalah. Saya telah mengujinya & berfungsi dengan baik dalam setiap kasus.
Semoga ini bisa membantu semua orang.
sumber
Dengan asumsi Anda memiliki folder gambar di direktori kartu SD Anda hanya untuk gambar.
Kemudian Anda dapat memutuskan dengan apa yang ingin Anda lakukan dengan konten yang ada di aktivitas Anda.
Ini adalah contoh untuk mengambil nama jalur untuk gambar, uji ini dengan kode Anda hanya untuk memastikan Anda dapat menangani hasil yang datang kembali. Anda dapat mengubah kode sesuai kebutuhan agar lebih sesuai dengan kebutuhan Anda.
Saran saya adalah mencoba mendapatkan pengambilan gambar dengan benar, saya pikir masalahnya adalah konten mengakses gambar pada kartu sd. Lihatlah Menampilkan gambar pada kartu sd .
Jika Anda dapat menjalankan dan menjalankannya, mungkin dengan contoh memasok penyedia yang benar, Anda harus dapat menemukan solusi untuk kode Anda.
Terus perbarui saya dengan memperbarui pertanyaan ini dengan kemajuan Anda. Semoga berhasil
sumber
android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.GET_CONTENT typ=file:///sdcard/images/* }
startActivityforResult
dan menyediakan suatu kegiatan. Itulah yang saya maksudkan tentang memutuskan apa yang akan terjadi selanjutnya, salah saya.startActivityForResult(intent, 1);
dan masih mendapatkan kesalahan ini ... Kode ini terletak di luar Aktivitas, tetapi saya memiliki referensi ke aktivitas tersebut dan memanggilstartActivityForResult
metode pada referensi itu - mungkin ini alasannya?1
yang Anda lewati? CobaIMAGE_PICK
Intent.ACTION_PICK
bukanIntent.ACTION_GET_CONTENT
. Apa maksudmuIMAGE_PICK
? Tidak ada konstanta seperti itu. Saya juga mencobaintent.setData(Uri.fromFile(new File("/sdcard/image/")));
. Saya mencoba semua kemungkinan kombinasi ini dan sepertinya tidak ada yang berhasil ...ini adalah kunjungan saya kembali ke topik ini, mengumpulkan semua informasi di sini, ditambah dari pertanyaan stack overflow yang relevan. Ini mengembalikan gambar dari beberapa penyedia, sambil menangani kondisi kehabisan memori dan rotasi gambar. Ini mendukung galeri, Picasa dan manajer file, seperti kotak drop. Penggunaannya sederhana: sebagai input, konstruktor menerima pemecah konten dan uri. Outputnya adalah bitmap final.
Referensi:
sumber
Ada dua tutorial bermanfaat tentang pemilih gambar dengan kode sumber yang dapat diunduh di sini:
Cara Membuat Pemilih Gambar Android
Cara Memilih dan Memotong Gambar di Android
Namun, aplikasi ini akan terpaksa ditutup kapan saja, Anda dapat memperbaikinya dengan menambahkan atribut android: configChanges ke aktivitas utama dalam file Manifest seperti:
Tampaknya API kamera kehilangan kontrol dengan orientasi sehingga ini akan membantunya. :)
sumber
Langkah 1 Kode untuk membuka galeri untuk memilih foto:
Langkah 2 Kode untuk mendapatkan data di
onActivityResult
:sumber
READ_EXTERNAL_STORAGE
Untuk menampilkan gambar dan video coba ini:
sumber
Kalau-kalau itu membantu; Saya melakukan ini untuk mendapatkan Bitmap:
sumber
Jawaban di atas benar. Saya menghadapi masalah berbeda di mana di HTC M8 aplikasi saya macet ketika memilih gambar dari galeri. Saya mendapatkan nilai nol untuk jalur gambar. Saya memperbaiki dan mengoptimalkan dengan solusi berikut. dalam metode onActivityResult
}
sumber
sumber
sumber
Ambil jenis file tertentu
Contoh ini akan mendapatkan salinan gambar.
Buka jenis file tertentu
Saat berjalan pada 4.4 atau lebih tinggi, Anda meminta untuk membuka file yang dikelola oleh aplikasi lain
Sumber asli
sumber
Tambahan untuk jawaban sebelumnya, jika Anda mengalami masalah dalam mendapatkan jalur yang benar (seperti AndroZip) Anda dapat menggunakan ini:
sumber
Temukan jawaban untuk memilih gambar tunggal dari galeri
sumber
Cara tercepat untuk membuka gambar dari galeri atau kamera.
Referensi asli: dapatkan gambar dari galeri di android secara terprogram
Metode berikut akan menerima gambar dari galeri atau kamera dan akan menampilkannya di ImageView. Gambar yang dipilih akan disimpan secara internal.
kode untuk xml
Kelas JAWA
sumber
di sini adalah contoh saya, mungkin tidak persis seperti kasus Anda.
dengan asumsi bahwa Anda mendapatkan format base64 dari penyedia API Anda, berikan nama file dan ekstensi file, simpan ke lokasi tertentu di sistem file.
Jangan lupa untuk menyiapkan penyedia file yang tepat di tempat pertama di AndroidManifest.xml
di mana path file adalah xml di ... / res / xml / file_path.xml
Singkatnya, siapkan penyedia file terlebih dahulu, berikan Uri ke Intent untuk sumber gambar yang diketahui dan dapat diakses, jika tidak, simpan gambar di lokasi yang diinginkan dan kemudian berikan lokasi (seperti Uri) ke Intent.
sumber