• 04-10-2016, 01:01:19
    #1
    merhaba arkadaşlar, başlıkta da belirttiğim gibi webview ile girilen sitelerde file inputu çalışmıyor yani dosya seçemiyorum tıklandığında herhangi bir aktivite olmuyor. yabancı kaynaklardan bazı şeyler denedim ancak başarılı olamadım.

    Bunun yolunu bilen varsa yardımcı olursa çok sevinirim.
  • 04-10-2016, 21:56:21
    #2
    bilgisi olan kimse yok mu arkadaşlar?
  • 04-10-2016, 21:58:50
    #3
    Kategori Moderatörü
    skype adresim yazilimapp eklerseniz detayları konuşabiliriz hocam yardımcı olabilirim o konuda çalışmam ve örnekler mevcuttur.
  • 04-10-2016, 23:25:27
    #4
    Hocam Merhabalar,

    Daha önce aynı sorunla karşılaşan biri olarak, kendi çözümümü aşağıya yazıyorum.

    Öncelikle ilgili classa gerekli değişkenleri oluşturalım;

    Alıntı
    static WebView mWebView;
    private ValueCallback<Uri> mUploadMessage;
    public ValueCallback<Uri[]> uploadMessage;
    public static final int REQUEST_SELECT_FILE = 100;
    private final static int FILECHOOSER_RESULTCODE = 1;
    Şimdi OnActivityResult() methodun varsa aşağıdaki kodları içine yapıştır, ben yok diye varsayıp method adıyla birlikte veriyorum

    Alıntı
    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent intent)
    {
    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
    {
    if (requestCode == REQUEST_SELECT_FILE)
    {
    if (uploadMessage == null)
    return;
    uploadMessage.onReceiveValue(WebChromeClient.FileC hooserParams.parseResult(resultCode, intent));
    uploadMessage = null;
    }
    }
    else if (requestCode == FILECHOOSER_RESULTCODE)
    {
    if (null == mUploadMessage)
    return;
    // Use MainActivity.RESULT_OK if you're implementing WebView inside Fragment
    // Use RESULT_OK only if you're implementing WebView inside an Activity
    Uri result = intent == null || resultCode != MainActivity.RESULT_OK ? null : intent.getData();
    mUploadMessage.onReceiveValue(result);
    mUploadMessage = null;
    }
    else
    Toast.makeText(getActivity().getApplicationContext (), "Failed to Upload Image", Toast.LENGTH_LONG).show();
    }

    Şimdi ise onCreate() methodumuzun içine listinerlarımızı vs ekleyeceğiz



    Alıntı
    WebSettings mWebSettings = mWebView.getSettings();
    mWebSettings.setJavaScriptEnabled(true);
    mWebSettings.setSupportZoom(false);
    mWebSettings.setAllowFileAccess(true);
    mWebSettings.setAllowFileAccess(true);
    mWebSettings.setAllowContentAccess(true);

    mWebView.setWebChromeClient(new WebChromeClient()
    {
    // For 3.0+ Devices (Start)
    // onActivityResult attached before constructor
    protected void openFileChooser(ValueCallback uploadMsg, String acceptType)
    {
    mUploadMessage = uploadMsg;
    Intent i = new Intent(Intent.ACTION_GET_CONTENT);
    i.addCategory(Intent.CATEGORY_OPENABLE);
    i.setType("image/*");
    startActivityForResult(Intent.createChooser(i, "File Browser"), FILECHOOSER_RESULTCODE);
    }


    // For Lollipop 5.0+ Devices
    public boolean onShowFileChooser(WebView mWebView, ValueCallback<Uri[]> filePathCallback, WebChromeClient.FileChooserParams fileChooserParams)
    {
    if (uploadMessage != null) {
    uploadMessage.onReceiveValue(null);
    uploadMessage = null;
    }

    uploadMessage = filePathCallback;

    Intent intent = fileChooserParams.createIntent();
    try
    {
    startActivityForResult(intent, REQUEST_SELECT_FILE);
    } catch (ActivityNotFoundException e)
    {
    uploadMessage = null;
    Toast.makeText(getActivity().getApplicationContext (), "Cannot Open File Chooser", Toast.LENGTH_LONG).show();
    return false;
    }
    return true;
    }

    //For Android 4.1 only
    protected void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture)
    {
    mUploadMessage = uploadMsg;
    Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
    intent.addCategory(Intent.CATEGORY_OPENABLE);
    intent.setType("image/*");
    startActivityForResult(Intent.createChooser(intent , "File Browser"), FILECHOOSER_RESULTCODE);
    }

    protected void openFileChooser(ValueCallback<Uri> uploadMsg)
    {
    mUploadMessage = uploadMsg;
    Intent i = new Intent(Intent.ACTION_GET_CONTENT);
    i.addCategory(Intent.CATEGORY_OPENABLE);
    i.setType("image/*");
    startActivityForResult(Intent.createChooser(i, "File Chooser"), FILECHOOSER_RESULTCODE);
    }
    });

    stackoverflow'da bulduğum bu cevap benim problemimi çözmüştü.

    aşağıda bu sayfaya ve daha detaylı bilgiye ulaşabilirsin

    https://stackoverflow.com/questions/...oad-in-webview
  • 05-10-2016, 00:03:35
    #5
    hocam sorunu çözemediyseniz pm ile iletişime geçebiliriz
  • 05-10-2016, 12:45:13
    #6
    dcemalo adlı üyeden alıntı: mesajı görüntüle
    Hocam Merhabalar,

    Daha önce aynı sorunla karşılaşan biri olarak, kendi çözümümü aşağıya yazıyorum.

    çok teşekkür ettim hocam yardımınız için sorunum çözüldü.
    ayrıca uygulamamı yayına aldığımda ilk işim sizden indirme hizmeti almak olacak