Файл типа ввода не работает в android webview с Java - PullRequest
0 голосов
/ 28 мая 2020

Я новичок в разработке android и пытаюсь исправить файл входного типа в Android webview с помощью Java. Вот код, который я использую, и я пробовал несколько вещей, но у меня ничего не работает, не могли бы вы проверить и предложить что-нибудь, что может помочь мне исправить?

Я использую некоторый код внутри shouldOverrideUrlLoading, чтобы проверить, запрошенный URL-адрес начинается с https, что означает, что это внешняя ссылка, такая как почта, телефон или значки социальных сетей, и все работает нормально, и в условии else я попытался загрузить исходный URL-адрес, но ввод файла все еще не работает.

public boolean shouldOverrideUrlLoading(WebView view, String url) {

            if (url == null) {
                return false;
            }
            if (url.startsWith("market://")) {
                view.getContext().startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
                return true;
            }
            if (url.startsWith("https://api")) {
                view.getContext().startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
                return true;
            }
            if (url.startsWith("mailto:")) {

                try {
                    List<String> to = new ArrayList<String>();
                    List<String> cc = new ArrayList<String>();
                    List<String> bcc = new ArrayList<String>();
                    String subject = null;
                    String body = null;

                    url = url.replaceFirst("mailto:", "");

                    String[] urlSections = url.split("&");
                    if (urlSections.length >= 2) {

                        to.addAll(Arrays.asList(urlSections[0].split(",")));

                        for (int i = 1; i < urlSections.length; i++) {
                            String urlSection = urlSections[i];
                            String[] keyValue = urlSection.split("=");

                            if (keyValue.length == 2) {
                                String key = keyValue[0];
                                String value = keyValue[1];

                                value = URLDecoder.decode(value, "UTF-8");

                                if (key.equals("cc")) {
                                    cc.addAll(Arrays.asList(url.split(",")));
                                }
                                else if (key.equals("bcc")) {
                                    bcc.addAll(Arrays.asList(url.split(",")));
                                }
                                else if (key.equals("subject")) {
                                    subject = value;
                                }
                                else if (key.equals("body")) {
                                    body = value;
                                }
                            }
                        }
                    }
                    else {
                        to.addAll(Arrays.asList(url.split(",")));
                    }

                    Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
                    emailIntent.setType("message/rfc822");

                    String[] dummyStringArray = new String[0]; // For list to array conversion
                    emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, to.toArray(dummyStringArray));
                    if (cc.size() > 0) {
                        emailIntent.putExtra(android.content.Intent.EXTRA_CC, cc.toArray(dummyStringArray));
                    }
                    if (bcc.size() > 0) {
                        emailIntent.putExtra(android.content.Intent.EXTRA_BCC, bcc.toArray(dummyStringArray));
                    }
                    if (subject != null) {
                        emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, subject);
                    }
                    if (body != null) {
                        emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, body);
                    }
                    view.getContext().startActivity(emailIntent);

                    return true;
                }
                catch (UnsupportedEncodingException e) {
                    /* Won't happen*/
                }

            }
            else {
                view.loadUrl(url);
                return true;
            }
            return false;
        } 
...