在Webview 4.2.2中选择文件(Android Studio)
问题描述:
我尝试在webview中输入我的html页面中的图像文件4.2.2 但输入文件不起作用。你有解决我的问题吗? 请帮我在Webview 4.2.2中选择文件(Android Studio)
这是我的代码(Tambah.java):
public class Tambah extends Activity {
private TextView text2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tambah);
final WebView myWebView = (WebView) findViewById(R.id.webPage);
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
myWebView.loadUrl("http://192.168.1.104/safa/tambah");
myWebView.setOnKeyListener(new View.OnKeyListener()
{
@Override
public boolean onKey(View v, int keyCode, KeyEvent event)
{
if(event.getAction() == KeyEvent.ACTION_DOWN)
{
WebView myWebView = (WebView) v;
switch(keyCode)
{
case KeyEvent.KEYCODE_BACK:
if(myWebView.canGoBack())
{
myWebView.goBack();
return true;
}
break;
}
}
return false;
}
});
}
}
答
你必须重写onShowFileChooser
方法在WebChromeClient
象下面这样:
mWebView.setWebChromeClient(new WebChromeClient() {
@Override
public boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> filePathCallback, FileChooserParams fileChooserParams) {
mFilePathCallback = filePathCallback;
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("*/*");
startActivityForResult(intent, PICKFILE_REQUEST_CODE);
return true;
}
});
然后onActivityResult
执行以下操作:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (requestCode == PICKFILE_REQUEST_CODE) {
//Uri result = intent.getData();
Uri result = intent == null || resultCode != RESULT_OK ? null
: intent.getData();
if(result != null){
Uri[] resultsArray = new Uri[1];
resultsArray[0] = result;
mFilePathCallback.onReceiveValue(resultsArray);
}
else
mFilePathCallback.onReceiveValue(null);
}
}
,并在活动像定义您的请求代码静态INT:
private static final int PICKFILE_REQUEST_CODE = 1;
它应该工作一样的魅力。
+0
非常感谢@Rahul Sharma,你帮了我。此代码适用于我。 –
+0
@dickynugrohohidayatulloh请接受答案。 :) –
您是否在清单中声明了Internet权限? –
我已经宣布, –