webview 怎么调用 onhidecustomview

如题所述

第1个回答  2015-02-11
最后,我发现要使用这个方法,还得自己继承WebChromeClient这个类把openFileChooser(ValueCallback<Uri> uploadFile)这个方法给写出来,代码如下:

abstract class TestWebChromeClient extends WebChromeClient
{

private WebChromeClient mWrappedClient;

protected TestWebChromeClient(WebChromeClient wrappedClient)
{
mWrappedClient = wrappedClient;
}

/** {@inheritDoc} */
@Override
public void onProgressChanged(WebView view, int newProgress)
{
mWrappedClient.onProgressChanged(view, newProgress);
}

/** {@inheritDoc} */
@Override
public void onReceivedTitle(WebView view, String title)
{
mWrappedClient.onReceivedTitle(view, title);
}

/** {@inheritDoc} */
@Override
public void onReceivedIcon(WebView view, Bitmap icon)
{
mWrappedClient.onReceivedIcon(view, icon);
}

/** {@inheritDoc} */
@Override
public void onReceivedTouchIconUrl(WebView view, String url, boolean precomposed)
{
mWrappedClient.onReceivedTouchIconUrl(view, url, precomposed);
}

/** {@inheritDoc} */
@Override
public void onShowCustomView(View view, CustomViewCallback callback)
{
mWrappedClient.onShowCustomView(view, callback);
}

/** {@inheritDoc} */
@Override
public void onHideCustomView()
{
mWrappedClient.onHideCustomView();
}

/** {@inheritDoc} */
@Override
public boolean onCreateWindow(WebView view, boolean dialog, boolean userGesture,
Message resultMsg)
{
return mWrappedClient.onCreateWindow(view, dialog, userGesture, resultMsg);
}

/** {@inheritDoc} */
@Override
public void onRequestFocus(WebView view)
{
mWrappedClient.onRequestFocus(view);
}

/** {@inheritDoc} */
@Override
public void onCloseWindow(WebView window)
{
mWrappedClient.onCloseWindow(window);
}

/** {@inheritDoc} */
@Override
public boolean onJsAlert(WebView view, String url, String message, JsResult result)
{
return mWrappedClient.onJsAlert(view, url, message, result);
}

/** {@inheritDoc} */
@Override
public boolean onJsConfirm(WebView view, String url, String message, JsResult result)
{
return mWrappedClient.onJsConfirm(view, url, message, result);
}

/** {@inheritDoc} */
@Override
public boolean onJsPrompt(WebView view, String url, String message,
String defaultValue, JsPromptResult result)
{
return mWrappedClient.onJsPrompt(view, url, message, defaultValue, result);
}

/** {@inheritDoc} */
@Override
public boolean onJsBeforeUnload(WebView view, String url, String message,
JsResult result)
{
return mWrappedClient.onJsBeforeUnload(view, url, message, result);
}

/** {@inheritDoc} */
@Override
public void onExceededDatabaseQuota(String url, String databaseIdentifier,
long currentQuota, long estimatedSize, long totalUsedQuota,
WebStorage.QuotaUpdater quotaUpdater)
{
mWrappedClient.onExceededDatabaseQuota(url, databaseIdentifier, currentQuota,
estimatedSize, totalUsedQuota, quotaUpdater);
}

/** {@inheritDoc} */
@Override
public void onReachedMaxAppCacheSize(long spaceNeeded, long totalUsedQuota,
WebStorage.QuotaUpdater quotaUpdater)
{
mWrappedClient
.onReachedMaxAppCacheSize(spaceNeeded, totalUsedQuota, quotaUpdater);
}

/** {@inheritDoc} */
@Override
public void onGeolocationPermissionsShowPrompt(String origin,
GeolocationPermissions.Callback callback)
{
mWrappedClient.onGeolocationPermissionsShowPrompt(origin, callback);
}

/** {@inheritDoc} */
@Override
public void onGeolocationPermissionsHidePrompt()
{
mWrappedClient.onGeolocationPermissionsHidePrompt();
}

/** {@inheritDoc} */
@Override
public boolean onJsTimeout()
{
return mWrappedClient.onJsTimeout();
}

/** {@inheritDoc} */
@Override
@Deprecated
public void onConsoleMessage(String message, int lineNumber, String sourceID)
{
mWrappedClient.onConsoleMessage(message, lineNumber, sourceID);
}

/** {@inheritDoc} */
@Override
public boolean onConsoleMessage(ConsoleMessage consoleMessage)
{
return mWrappedClient.onConsoleMessage(consoleMessage);
}

/** {@inheritDoc} */
@Override
public Bitmap getDefaultVideoPoster()
{
return mWrappedClient.getDefaultVideoPoster();
}

/** {@inheritDoc} */
@Override
public View getVideoLoadingProgressView()
{
return mWrappedClient.getVideoLoadingProgressView();
}

/** {@inheritDoc} */
@Override
public void getVisitedHistory(ValueCallback<String[]> callback)
{
mWrappedClient.getVisitedHistory(callback);
}

/** {@inheritDoc} */

public void openFileChooser(ValueCallback<Uri> uploadFile)
{
((TestWebChromeClient) mWrappedClient).openFileChooser(uploadFile);
}

}
 
以上代码我是在eoe上发现的,并不是我自己参详发现的哈。但是原作是谁我就不知道了,因为这段代码你只要百度一下openFileChooser这个方法你就能找到。

当你这样写好,然后就是去设置WebChromeClient的时候了。设置方法如下:

mContentView.web_main_web.setWebChromeClient(new TestWebChromeClient(
new WebChromeClient())
{
public void openFileChooser(ValueCallback<Uri> uploadFile)
{
if (mUploadMessage != null)
return;
mUploadMessage = uploadFile;

//自己写你的调用图片方法,我这里是封装了调用图片的方法的
//关键点在于这个mUploadMessage参数,获取到图片以后传给这个参数回去就可以了。
//具体用法百度一下就有。本回答被提问者和网友采纳