Не удается получить веб-представление Android для открытия селектора файлов на Android 9 - PullRequest
2 голосов
/ 17 октября 2019

Я пытаюсь открыть селектор входных данных type="file" в приложении WebView на мобильном устройстве, но решения, приведенные по другим вопросам, связанным с той же проблемой, были для более ранних версий Android и, похоже, не работают наAndroid 9. Проблема, похоже, в следующем фрагменте кода:

//For Lollipop 5.0+ Devices:  
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    public boolean onShowFileChooser(WebView webView, 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(MainActivity.this, "Error: Unable to open file browser", Toast.LENGTH_LONG).show();
            return false;
        }
        return true;
    }

1 Ответ

0 голосов
/ 23 октября 2019

Исправлено с использованием этого кода здесь.

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

            uploadMessage = filePathCallback;

            Intent intent = fileChooserParams.createIntent();
            try
            {
                intent.setAction(Intent.ACTION_GET_CONTENT);
                intent.setType("image/*,video/*,audio/*,file/*");
                startActivityForResult(intent, REQUEST_SELECT_FILE);
            } catch (ActivityNotFoundException e)
            {
                uploadMessage = null;
                Toast.makeText(MainActivity.this, "Error: Unable to open file browser", Toast.LENGTH_LONG).show();
                return false;
            }
            return true;
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...