Выбор файла не работает в TabLayout Fragment в веб-просмотре - PullRequest
0 голосов
/ 13 января 2019
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 не работает, пожалуйста, дайте мне какие-либо предложения, спасибо StackOverFlow.

Помогите мне, я хочу правильный вывод, как Chrome Browser, пожалуйста, помогите мне

File Chooser В Android Скажем, Filechooser никогда не использовал, почему я не знаю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...