Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
vkiper
16 / 16 / 6
Регистрация: 11.11.2015
Сообщений: 48
#1

WebView - не открывается FilePicker по нажатию кнопки - Программирование Android

28.08.2016, 18:18. Просмотров 291. Ответов 2
Метки нет (Все метки)

Всем доброго времени суток.
Делаю аппликацию-оболочку для одного сайта. Сделал все как доктор прописал, благо в сети информации полно.
Проверил на своем мобильнике, приложение устанавливается, работает, отображает сайт, даже умеет поворачиваться вместе с мобильником.
Все ссылки ведут себя как надо, я их фильтрую, релевантные отображаем в моем приложении, нерелевантные - во внешнем(дефолтном) браузере.
Заминка произошла на простой кнопке, которая по клику на нее должна открывать FilePicker (File Chooser и т.д.), для того чтобы юзер выбрал файл и загрузил его с мобильника на сайт.
Когда я захожу на сайт через обычный браузер, кнопка работает отлично, поднимает диалог FilePicker и т.д. Но когда я запускаю мое приложение с этим сайтом, то кнопка просто не реагирует.
Я начал грешить в сторону permissions, добавил в манифест кучу мусора типа:
XML
1
2
3
4
5
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.MANAGE_DOCUMENTS"/>
В коде разрешил все что нужно и не нужно:
Java
1
2
3
4
5
6
7
8
9
10
        String url = "http://my-site.com";
        WebView myView = (WebView)this.findViewById(R.id.webView1);
        WebSettings settings = myView.getSettings();
        settings.setJavaScriptEnabled(true);
        settings.setJavaScriptCanOpenWindowsAutomatically(true);
        settings.setLoadsImagesAutomatically(true);
        settings.setAllowContentAccess(true);
        settings.setAllowFileAccess(true);
        myView.setWebViewClient(new MyWebViewClient()); //for internal-navigation only
        myView.loadUrl(url);
Ничего не помогает. За самой кнопкой стоит простой JS, типа $('#browse_file').click(). Все стандартно.
Кстати, данный вопрос уже поднимался (Закгрузить файл в WebView), но разумного ответа не было, увы.
Может, кто сталкивался с подобными граблями?

ЗЫ: в теме новичок, прошу простить за левые вопросы, если таковые имеются.

Добавлено через 1 час 45 минут
Нашел ответ вот здесь, может кому пригодится:
http://stackoverflow.com/questions/5...oad-in-webview
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.08.2016, 18:18     WebView - не открывается FilePicker по нажатию кнопки
Посмотрите здесь:
WebView, открывается браузер при переходе по ссылке Android
Условие открытия WebView при нажатии на разные кнопки Android
По нажатию не открывается МЕНЮ Android
Авторизация по нажатию кнопки Android
Воспроизвести звук по нажатию кнопки Android
Android Выключение экрана по нажатию кнопки
Очистка StringBuilder по нажатию кнопки Android
Android Смена фото по нажатию кнопки
Android Вызов телефона, по нажатию кнопки
Как изменить ссылку по нажатию кнопки? Android
Создать базу данных по нажатию кнопки Android
Android Как создать кнопку по нажатию кнопки?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vkiper
16 / 16 / 6
Регистрация: 11.11.2015
Сообщений: 48
11.09.2016, 13:17  [ТС]     WebView - не открывается FilePicker по нажатию кнопки #2
Увы, у темы есть продолжение. Потому что теперь часть разделов недоступна, точнее, доступна только для просмотра.
Я научился вызывать джинна, т.е. окно FilePicker, но прикол в том, что файлы из некоторых разделов невозможно выбрать, они как бы находятся в состоянии "disabled".
Поясню с помощью фотки:
WebView - не открывается FilePicker по нажатию кнопки
Мы имеем условно две основных секции, в верхней секции файлы НЕ доступны, в нижней вполне доступны. Заходим, например, в Google Drive, видим там мои картинки(заблаговременно закинул туда несколько штук), но картинки не-кликабельные и имеют соответствующую "disabled" подсветку.
Теперь заходим в Gallery(или YandexDisk), там все доступно и работает как надо. Интересный момент еще заключается в том, что я могу открыть свой архив фотографий либо через "Images" либо через "Gallery". Так вот, в первом случае фотки не-кликабельные, во втором - кликабельные. Может кто знает, в чем засада?
Вот так выглядит ф-я onShowFileChooser():
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
            // For Lollipop 5.0+ Devices
            @TargetApi(Build.VERSION_CODES.LOLLIPOP)
            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();
 
                //little fix for 'type' argument ... because our intent already has prepared type, we need to add option for 'Gallery', and we do it by adding 'image/*'
                // [url]http://stackoverflow.com/questions/13065838/what-are-the-possible-intent-types-for-intent-settypetype[/url]
                intent.setType("image/*,application/pdf,application/vnd.ms-powerpoint,.jpg,.png,.ppt,.pptx*");
 
                try
                {
                    startActivityForResult(intent, REQUEST_SELECT_FILE);
                } catch (ActivityNotFoundException e)
                {
                    uploadMessage = null;
                    Toast.makeText(null, "Cannot Open File Chooser", Toast.LENGTH_LONG).show();
                    return false;
                }
                return true;
            }
Манифест и ф-я onCreate() приведены в начале темы, не буду их повторять.
Всем заранее 10х.
vkiper
16 / 16 / 6
Регистрация: 11.11.2015
Сообщений: 48
12.09.2016, 12:21  [ТС]     WebView - не открывается FilePicker по нажатию кнопки #3
Снова разобрался сам, изрядно погуглив.
Оказывается, вот так нельзя:
Java
1
intent.setType("image/*,application/pdf,application/vnd.ms-powerpoint,.jpg,.png,.ppt,.pptx*");
А можно вот так:
Java
1
2
3
                intent.setType("image/*");
                String[] mimetypes = {"application/pdf", "application/vnd.ms-powerpoint", "image/*" };
                intent.putExtra(Intent.EXTRA_MIME_TYPES, mimetypes);
Всем удачи!
Yandex
Объявления
12.09.2016, 12:21     WebView - не открывается FilePicker по нажатию кнопки
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru