如何在webview中启用文件上载

eaf3rand  于 2021-07-06  发布在  Java
关注(0)|答案(0)|浏览(143)

我是android开发的初学者,我有botoom导航栏和片段,其中一个片段是webview,但上传文件按钮不工作,但它在浏览器上工作,我怎么能启用它?可以帮助我的代码,我需要添加到webview客户端或webchrome客户端
我有一个空白片段,我的项目使用androidx最新版本,sdkapi是19 android4.4
我在youtube上看视频,但我发现红色错误,我认为代码与我删除的片段不匹配
这是我的片段网络视图谢谢
这是密码

package mypacgaename.com;

import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebResourceError;
import android.webkit.WebResourceRequest;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.LinearLayout;
import android.widget.ProgressBar;

import androidx.fragment.app.Fragment;

public class chatFragment extends Fragment {
    LinearLayout eLinearLayout_chat;
    WebView webView_chat;
    ProgressBar mProgressBar_chat;
    //SwipeRefreshLayout swipeRefreshLayout_chat;

    public chatFragment() {
        // Required empty public constructor
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View v = inflater.inflate(R.layout.fragment_chat, container, false);
        webView_chat = (WebView) v.findViewById(R.id.webview_chat);
        eLinearLayout_chat = (LinearLayout) v.findViewById(R.id.LinearWebView_chat);
        mProgressBar_chat = (ProgressBar) v.findViewById(R.id.progressBar_chat);
        //swipeRefreshLayout_chat = (SwipeRefreshLayout) v.findViewById(R.id.swipeweb_chat);
        webView_chat.loadUrl("https://www.url-no-need-to-show-it.com");
        webView_chat.getSettings().setJavaScriptEnabled(true);
        webView_chat.getSettings().setUseWideViewPort(true);
        webView_chat.getSettings().setDomStorageEnabled(true);
        webView_chat.getSettings().setSupportZoom(false);
        webView_chat.getSettings().setAppCacheEnabled(true);
        webView_chat.getSettings().setDatabaseEnabled(true);
        webView_chat.getSettings().setAllowFileAccess(true);
        webView_chat.getSettings().setAllowContentAccess(true);
        webView_chat.getSettings().setSupportMultipleWindows(true);
        webView_chat.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);

        webView_chat.setWebViewClient(new WebViewClient() {

            @Override
            public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
                return super.shouldOverrideUrlLoading(view, request);
            }

            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                super.onPageStarted(view, url, favicon);
                mProgressBar_chat.setVisibility(View.VISIBLE);
            }

            @Override
            public void onPageFinished(WebView view, String url) {
                super.onPageFinished(view, url);
                mProgressBar_chat.setVisibility(View.GONE);
            }

            @Override
            public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
                super.onReceivedError(view, request, error);
                eLinearLayout_chat.setVisibility(View.VISIBLE);
                view.setVisibility(View.GONE);
            }

            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                if (url.contains("https://www.tidio.com/powered-by-tidio/live-chat/?platform=others&project=dc71bf5k0ncictpdhdyhujy2hzf9zn7x&device=mobile&utm_source=plugin_ref&utm_medium=widget_v4&utm_campaign=plugin_ref&utm_referrer=drriyadh-lab.xyz")) {
                    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
                    startActivity(intent);
                    return true;
                }
                if (url.startsWith("tel:") || url.startsWith("whatsapp:")) {
                    Intent intent = new Intent(Intent.ACTION_VIEW);
                    intent.setData(Uri.parse(url));
                    startActivity(intent);
                    return true;
                }
                // all the rest open in Webview
                return false;
            }

        });

        return v;
    }

}

编辑:我试过这个,但没用

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题