文件选择器在Webview的TabLayout片段中不起作用

时间:2019-01-13 14:15:26

标签: java android android-studio

public class UploadFragment extends Fragment {

private WebView webView;
private ProgressBar progressBar1;
private SwipeRefreshLayout mSwipeRefreshLayout1;
private ValueCallback<Uri> mUploadMessage;
private final static int FILECHOOSER_RESULTCODE=1;



@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment


    return inflater.inflate(R.layout.uploadvideo, container, false);


}

@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {

    webView = (WebView) view.findViewById(R.id.UploadWebView);

    webView.setWebViewClient(new MyAppWebViewClient());
    webView.getSettings().setJavaScriptEnabled(true);
    WebSettings webSettings = webView.getSettings();
    webView.loadUrl("http://example.com/filechooser.php");

    mSwipeRefreshLayout1 = (SwipeRefreshLayout) view.findViewById(R.id.swipeToRefreshUpload);
    mSwipeRefreshLayout1.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
        @Override
        public void onRefresh() {
            webView.reload();
        }
    });

    if (mSwipeRefreshLayout1.isRefreshing()) {
        mSwipeRefreshLayout1.setRefreshing(false);
    }


    webView.setOnKeyListener(new View.OnKeyListener() {
        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {
                webView.goBack();
                return true;
            }

            return false;
        }
    });

    webView.setWebChromeClient(new WebChromeClient(){

        public void openFileChooser(ValueCallback<Uri> uploadMsg) {

            mUploadMessage = uploadMsg;
            Intent i = new Intent(Intent.ACTION_GET_CONTENT);
            i.addCategory(Intent.CATEGORY_OPENABLE);
            i.setType("image/*");
            getActivity().startActivityForResult(Intent.createChooser(i,"File Chooser"), FILECHOOSER_RESULTCODE);

        }

        // For Android 3.0+
        public void openFileChooser( ValueCallback uploadMsg, String acceptType ) {
            mUploadMessage = uploadMsg;
            Intent i = new Intent(Intent.ACTION_GET_CONTENT);
            i.addCategory(Intent.CATEGORY_OPENABLE);
            i.setType("*/*");
            getActivity().startActivityForResult(
                    Intent.createChooser(i, "File Browser"),
                    FILECHOOSER_RESULTCODE);
        }

        //For Android 4.1
        public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture){
            mUploadMessage = uploadMsg;
            Intent i = new Intent(Intent.ACTION_GET_CONTENT);
            i.addCategory(Intent.CATEGORY_OPENABLE);
            i.setType("image/*");
            getActivity().startActivityForResult( Intent.createChooser( i, "File Chooser" ), UploadFragment.FILECHOOSER_RESULTCODE );

        }

    });
}

public class MyAppWebViewClient extends WebViewClient {

    @Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);
        Toast.makeText(getActivity(),"pageFinished", Toast.LENGTH_SHORT).show();


        if (mSwipeRefreshLayout1.isRefreshing()) {
            mSwipeRefreshLayout1.setRefreshing(false);
        }


    }

    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        super.onPageStarted(view, url, favicon);
    }


    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
    }
}

@Override
public void onActivityResult(int requestCode, int resultCode,
                                Intent intent) {
    if(requestCode==FILECHOOSER_RESULTCODE)
    {
        if (null == mUploadMessage) return;
        Uri result = intent == null || resultCode != RESULT_OK ? null
                : intent.getData();
        mUploadMessage.onReceiveValue(result);
        mUploadMessage = null;
    }
}
}

我有1个php页面,在这个页面中,我将2个输入类型文件放在一个我想要视频/ *的输入中,第二个我想要图像/ *的输入中,我如何才能获得正确的结果。在Chrome浏览器中,我的网站运行良好,但在android studio webview中却无法运行,请给我任何建议,谢谢StackOverFlow。

帮我,我想要正确的输出,例如Chrome浏览器,请帮助我

Android中的文件选择器说Filechooser从未使用过我不知道的原因。

0 个答案:

没有答案