FilePicker из веб-браузера Android работает только один раз

Мне нужно выбрать изображение из webview и загрузить его на сервер. Код работает, но если я onShowFileChooser не выбирая ничего, в следующий раз элемент управления не будет onShowFileChooser в onShowFileChooser .

Я проверил то же самое в браузере android, и он работает там, поэтому должно быть что-то, что мне не хватает.

Ниже приведен код:

 web.setWebChromeClient(new BizzerClient()); web.setWebViewClient(new WebViewClient(){ //========================================= @Override public boolean shouldOverrideUrlLoading(WebView view, String url){ if(url.contains(Domain) && !url.startsWith(SMS)){ //== if url is of same site and not related to sms, do nothing }else{ Intent i = new Intent(Intent.ACTION_VIEW); i.setData(Uri.parse(url)); startActivity(i); return true; } return false; } }); //========================================= @Override protected void onActivityResult(int requestCode, int resultCode, Intent intent) { if(requestCode==FileChooser){ Uri result = intent == null || resultCode != RESULT_OK ?null:Uri.parse(intent.getDataString()); if(result==null) return; if(fPathCallback!=null){ fPathCallback.onReceiveValue(new Uri[]{result}); fPathCallback = null; }else{ upload.onReceiveValue(result); upload = null; } } } //===================================================== class BizzerClient extends WebChromeClient{ //========================================= public void openFileChooser(ValueCallback<Uri> uploadMsg) { upload = uploadMsg; Intent i = new Intent(Intent.ACTION_GET_CONTENT); i.addCategory(Intent.CATEGORY_OPENABLE); i.setType("image/*"); startActivityForResult(Intent.createChooser(i,"File Chooser"), FileChooser); } //========================================= //== For Android 3.0+ public void openFileChooser( ValueCallback uploadMsg, String acceptType ) { upload = uploadMsg; Intent i = new Intent(Intent.ACTION_GET_CONTENT); i.addCategory(Intent.CATEGORY_OPENABLE); i.setType("*/*"); startActivityForResult(Intent.createChooser(i, "File Browser"),FileChooser); } //========================================= //== For Android 4.1 public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture){ upload = uploadMsg; Intent i = new Intent(Intent.ACTION_GET_CONTENT); i.addCategory(Intent.CATEGORY_OPENABLE); i.setType("image/*"); startActivityForResult( Intent.createChooser( i, "File Chooser" ), FileChooser ); } //========================================= public boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> filePathCallback,WebChromeClient.FileChooserParams fileChooserParams) { fPathCallback = filePathCallback; Toast.makeText(getApplicationContext(), "A", Toast.LENGTH_SHORT).show(); Intent i = new Intent(Intent.ACTION_GET_CONTENT); i.addCategory(Intent.CATEGORY_OPENABLE); i.setType("image/*"); startActivityForResult(Intent.createChooser(i,"File Chooser"), FileChooser); return true; } } 

Кто-нибудь знает, как это исправить?

У моего одноклассника такая же проблема, он исправил его

upload.onReceiveValue (нуль)

Intereting Posts