Soru & Cevap

Webview uygulamada tipi "file" olan inputa basıldığında kamera/galeriden seç seçeneği sunmak

16.11.2020 - 10:07

Merhaba, buradaki ilk sorumu soracağım. Webview bir uygulama oluşturuyorum ve site içerisindeki bazı formlarda resim seçip yükleme yapılabiliyor. Uygulamada ise her <input type="file"> olan inputlara basıldığında kullanıcıya 2 seçenek sunmak istiyorum. Kullanıcı isterse kameradan resim çekip inputa göndersin, isterse de galeriden halihazırda bulunan bir resmi seçip inputa göndersin. Bu şekilde olmazsa, inputa basıldığında direkt kamera da açılabilir. Bu arada sadece fotoğraf çekimi olmalı, video yüklenmemeli. Şu an da ise inputa basıldığında direkt olarak galeriyi açıyor. Çözüm önerilerinizi bekliyorum, teşekkürler :)

23 Görüntülenme

4 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

picture-288425-1590001614.png
ozturkteomanakin
07.01.2021 - 02:38

Merhabalar, 

Webview içinde açmış olduğum web sitesinde kullandığım file tipindeki input butonuna basınca camera seçeneğini açtıramıyorum. Dediğiniz proje örneğini denedim. Hala camera seçeneği açılmıyor. Sadece dosya seçimi açılıyor. Eğer çözümü varsa paylaşabilir misiniz?

İyi günler dilerim. 

Profile picture for user hamikaya
hamikaya
17.11.2020 - 01:32

Cihazın default seçicisini kullanmayı denedim ve bu şekilde oluyor, fotoğraf çekiyor fakat tam tutarlı çalışmıyor. Bazı sürümlerde çektiği fotoğrafı inputa gönderirken bazı sürümlerde de fotoğrafı çekip forma geri dönüldüğünde input hala boş kalıyor, resmi inputa göndermiyor. Biraz daha inceledim ve şu değerin null döndüğü için böyle bir problem yaşandığı kanaatine vardım

takePictureIntent.resolveActivity(activity_ismi.this.getPackageManager())

 

Eğer bu değer null dönerse, kamera seçeneği sunulmadan direkt olarak dosya yöneticisine yönlendiriyor. Bu kontrolü es geçip denedim, kamera açılıyor, fotoğrafı çekiyor fakat forma döndüğümde file tipli inputun, resmi seçmemiş olduğunu görüyorum. Sanırım sorun; Yukarıda yazdığım değerin null sonucunu vermesi. Android 9 sürümünde sorunsuz çalışmasına rağmen Android 10, Android 7 ve bazı diğer Android sürümlerinde çalışmıyor.​

/sites/default/files/cevaplar/dosya/2020/file-7dmydp_0.jpg
Profile picture for user .tire.
.tire.
16.11.2020 - 03:33
private void selectImage(Context context) { final CharSequence[] options = {"Resim Çek", "Galeri", "Çıkış"}; AlertDialog.Builder builder = new AlertDialog .Builder(context); builder.setTitle("Resim Yükleyin"); builder.setItems(options, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int item) { if (options[item].equals("Resim Çek")) { Intent takePicture = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(takePicture, 0); } else if (options[item].equals("Galeri")) { Intent pickPhoto = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); startActivityForResult(pickPhoto, 1);//one can be replaced with any action code } else if (options[item].equals("Çıkış")) { dialog.dismiss(); } } }); builder.show(); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode != RESULT_CANCELED) { switch (requestCode) { case 0: if (resultCode == RESULT_OK && data != null) { Bitmap selectedImage = (Bitmap) data.getExtras().get("data"); imageView.setImageBitmap(selectedImage); } break; case 1: if (resultCode == RESULT_OK && data != null) { Uri selectedImage = data.getData(); String[] filePathColumn = {MediaStore .Images.Media.DATA}; if (selectedImage != null) { Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null); if (cursor != null) { cursor.moveToFirst(); int columnIndex = cursor.getColumnIndex(filePathColumn[0]); String picturePath = cursor
hamikaya
17.11.2020 - 01:42
Son durumu cevap olarak ekledim, bilginize.