can ' T open file chooser in WebView Android 4.4.2 mit WebChromeClient
In meinem webview, indem Sie auf "Datei Wählen" - Taste In samsung 7-Zoll-tablet ich möchte, um eine Datei zu öffnen Browser, aber ich kann nicht öffnen diese in Android-Version 4.4.2.
So kann u plz mir helfen?
Hier ist mein Code.
WebViewDemo.java
package com.example.webviewdemo;
import java.io.File;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.content.res.Configuration;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.os.Parcelable;
import android.provider.MediaStore;
import android.webkit.ConsoleMessage;
import android.webkit.ValueCallback;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.webkit.WebSettings.PluginState;
import android.widget.ProgressBar;
import android.widget.Toast;
public class WebViewDemo extends Activity {
/** Called when the activity is first created. */
WebView web;
private ValueCallback<Uri> mUploadMessage;
private final static int FILECHOOSER_RESULTCODE=1;
@Override
protected 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;
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.show_web_view);
web = (WebView) findViewById(R.id.webView1);
web = new WebView(this);
web.getSettings().setJavaScriptEnabled(true);
web.loadUrl("file:///android_asset/select.html");
web.setWebViewClient(new myWebClient());
web.setWebChromeClient(new WebChromeClient()
{
//The undocumented magic method override
//Eclipse will swear at you if you try to put @Override here
//For Android 3.0+
public void openFileChooser(ValueCallback<Uri> uploadMsg) {
mUploadMessage = uploadMsg;
Intent i = new Intent(Intent.ACTION_GET_CONTENT);
i.addCategory(Intent.CATEGORY_OPENABLE);
i.setType("image/*");
WebViewDemo.this.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("*/*");
WebViewDemo.this.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/*");
WebViewDemo.this.startActivityForResult( Intent.createChooser( i, "File Chooser" ), WebViewDemo.FILECHOOSER_RESULTCODE );
}
});
setContentView(web);
}
public class myWebClient extends WebViewClient
{
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
//TODO Auto-generated method stub
super.onPageStarted(view, url, favicon);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
//TODO Auto-generated method stub
view.loadUrl(url);
return true;
}
@Override
public void onPageFinished(WebView view, String url) {
//TODO Auto-generated method stub
super.onPageFinished(view, url);
}
}
//flipscreen not loading again
@Override
public void onConfigurationChanged(Configuration newConfig){
super.onConfigurationChanged(newConfig);
}
//To handle "Back" key press event for WebView to go back to previous screen.
/*@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if ((keyCode == KeyEvent.KEYCODE_BACK) && web.canGoBack()) {
web.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}*/
}
Innen assets/select.html
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<div data-role="page" id="pageone">
<div data-role="header">
<h1>PRODUCT DETAIL</h1>
</div>
<div data-role="content">
<form method="get" action="">
<div data-role="fieldcontain">
<label for="name">Open File Chosser And Select File From Camera :</label>
<input type="file" name="text" id="name" type="image/*" >
</div>
<div data-role="fieldcontain">
<label for="name">Email:</label>
<input type="text" name="text" id="name" value="" placeholder="What's Your Name?">
</div>
<div data-role="fieldcontain">
<label for="search">Looking for anything?</label>
<input type="search" name="search" id="search" value="" placeholder="Search for content"/>
</div>
<div data-role="fieldcontain">
<label for="colors"><a href="http://www.androidexample.com/media/webview/webview_browser.html">Open link in webview browser.</a></label>
<br>
<br>
<label for="colors"><a href="http://www.google.com/">Open link in new browser.</a></label>
</div>
</div>
</form>
</div>
</div>
</body>
</html>
link ich hve versucht diesen code. Wenn ich open (androidexample.com/media/webview/details.html), erwähnt in code in das Gerät ein browser-dann funktioniert es einwandfrei. aber wenn ich ausführen, dass der code in der Anwendung dann in der web-Ansicht funktioniert es nicht.
Dies kann nicht getan werden in KitKat und ist etwas, das Tonnen-Entwickler sind frustriert.
Ich habe die Lösung aus [ diesem ][1] - link. Verwenden Sie cordova-plugin für diese. [1]: stackoverflow.com/questions/19882331/...
Dies kann nicht getan werden in KitKat und ist etwas, das Tonnen-Entwickler sind frustriert.
Ich habe die Lösung aus [ diesem ][1] - link. Verwenden Sie cordova-plugin für diese. [1]: stackoverflow.com/questions/19882331/...
InformationsquelleAutor Kush Patel | 2015-02-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diesem wird gearbeitet, auf jeden Fall, denn ich habe es schon versucht...
Ich bin mit dem gleichen Problem. Die API openFileChooser wurde entfernt aus dem KitKat-webview.
Ich bin mit diesem Problem auch. haben Sie sol?
InformationsquelleAutor BSavaliya
Versuchen mit
...
Ich hoffe, dass dies hilfreich für Sie!
Vielen Dank für diesen code! Wirklich lange, sah sich für diese!
InformationsquelleAutor gianguyen
Hier das problem, dass bei Android 4.4 die input-Datei ist nicht implementiert und wird es nie funktionieren, durch die standard WebView-Schnittstelle.
Was habe ich in meinem Projekt zu verwenden CrossWalk-Projekt zu machen, funktionieren.
Es erforderte einiges an Arbeit, ändern Sie die Standard WebView von der standard-Android auf Zebrastreifen, aber es ist wirklich gedient, meine Bedürfnisse ganz gut.
Grundsätzlich müssen Sie ersetzt die normale Android WebView mit dem CrossWalk webView. Dies hatte einige Vorteile für uns, einschließlich der Tatsache, dass Chrome wird aktualisiert, noch auf Android 4.0, 4.1 etc, geben uns einen viel besseren support und weniger bugs.
Ich dokumentiert, wie ich es umgesetzt hier: http://blog.maurizionapoleoni.com/blog/implementing-a-file-input-with-camera-support-in-android-with-crosswalk/
Ich habe aktualisiert, der link 🙂
Endlich !! Yeaaaa.. Danke John
InformationsquelleAutor Mimo
Dieser code läuft einwandfrei auf meiner Seite.
Hoffe, es wird für Sie arbeiten...
InformationsquelleAutor Salman Nazir