Articles of webview

android webview抓坏url

在我的应用程序中,我从Web服务接收URL作为字符串并将其加载到WebView。 mainContentText = (WebView) findViewById(R.id.mainContentText); mainContentText.getSettings().setJavaScriptEnabled(true); mainContentText.setWebViewClient(new CustomWebClient()); mainContentText.loadUrl(url); private class CustomWebClient extends WebViewClient{ private static final String TAG = “WebWiewActivity”; @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { Log.d(TAG, “loading: ” + url); return false; } @Override public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { super.onReceivedError(view, errorCode, description, failingUrl); Log.e(TAG, String.format(“*ERROR* […]

Android:以编程方式在Jelly Bean上的WebView中触发文本选择模式

我需要在WebView中以编程方式触发文本选择模式,但我使用的代码在Jelly Bean上不起作用? 我一直在使用以下代码,但它不再适用于Android 4.1(Jelly Bean),因为Jelly Bean不再支持WebView.selectText,emulateShiftHeld和密钥发送。 以下代码适用于ICS以上的所有版本基于: 如何启用android webview中的默认高亮菜单? public void selectAndCopyText() { try { // ICS WebView.class.getMethod(“selectText”).invoke(this); } catch (Exception e1) { try { Method m = WebView.class.getMethod(“emulateShiftHeld”, (Class[])null); m.invoke(this, (Object[])null); } catch (Exception e2) { // fallback KeyEvent shiftPressEvent = new KeyEvent(0,0, KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_SHIFT_LEFT,0,0); shiftPressEvent.dispatch(this); } } } 如何实现适用于Jelly Bean的类似function?

Android WebView在底部添加了奇怪的空白空间

我正在尝试使用JavaScript为加载的WebView添加更多空白空间。 我使用来自String资源的loadDataWithBaseUrl()加载数据。 然后,在测量了一些内容后,我需要将WebView更大,例如100像素。 所以我使用loadDataWithBaseUrl()调用javascript函数: mWebView.loadUrl(“javascript:addHeight()”); Javascript函数在原始HTML中定义: function addHeight() { ” + var elemDiv = document.createElement(‘div’); elemDiv.style.cssText = ‘height:100px;’; document.body.appendChild(elemDiv); } 在此之后, WebView自行resize以适应新内容。 但是,生成的高度不是originalSize + 100px,而是更大。 我不知道问题出在哪里。 我无法确定目标大小,因为它取决于附加div的大小,它将始终不同。 有人试过吗? 你熟悉这种行为吗?

带有iframe嵌入的Android WebView不会在4.2.2及更低版本上显示

我目前正在尝试在我的Android应用程序上实现一个youtube嵌入我的Android应用程序,它使用WebView显示它的内容,我的目标是API 14及更高版本,但问题是iframe youtube嵌入在4.2.2上我的webview上没有显示以下但在4.3及以上版本上正常工作。 我迷失了我错过的东西但是这里的示例是我用来实现的代码: String customHtml = “”; String video; // = “”; video = “” + ” ” + ” var tag = document.createElement(‘script’);” + ” tag.src = \”https://www.youtube.com/iframe_api\”;” + ” var firstScriptTag = document.getElementsByTagName(‘script’)[0];” + ” firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);” + ” var player;” + ” function onYouTubeIframeAPIReady() {” + ” player = new YT.Player(‘player’, […]

如何模仿默认浏览器从webview下载.apk文件?

有人可以解释我在尝试从网上下载.apk时如何模仿默认浏览器吗? 到目前为止我有这个: WebView webview; @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main); webview = (WebView) findViewById(R.id.webview); webview.setWebViewClient(new HelloWebViewClient()); WebSettings webSettings = webview.getSettings(); webSettings.setSavePassword(false); webSettings.setSaveFormData(false); webSettings.setJavaScriptEnabled(true); webSettings.setSupportZoom(false); webview.setDownloadListener(new DownloadListener() { public void onDownloadStart(final String url, String userAgent, String contentDisposition, String mimetype, long contentLength) { Toast.makeText(testapp.this, url, Toast.LENGTH_LONG); } }); webview.loadUrl(“http://dacp.jsharkey.org/TunesRemote-r2.apk”); } 我已经添加了使用互联网的许可。 我还需要添加其他权限吗? 我不正确地使用DownloadListener吗? 先谢谢你!

在Android App中通过WebView查看RTSPvideo流

我的应用程序有一个WebView加载一个简单的HTML。 但是,此html链接到rtsp实时video流,而WebView无法加载它,而是返回“Web Page Not Available”消息。 当我在原生Android浏览器中打开rtsp链接时,它会加载并正常工作,因此我知道video流不兼容。 是否可以启用WebView中的某些内容以允许播放rtspvideo流? 谢谢!

在Honeycomb景观上HTML闪烁

在Honeycomb中以全屏显示WebView ( fill_parent宽度和高度)时,HTML以横向方向加载时会瞬间闪烁。 鉴于此代码,您应该只看到黄色背景( WebView颜色)或蓝色背景(html正文颜色)。 但是当切换到横向时,您可以看到屏幕部分填充蓝色,背后是黄色。 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); WebView webView = (WebView) findViewById(R.id.webview); webView.setBackgroundColor(Color.YELLOW); webView.loadData(“Hello world!!!”, “text/html”, “UTF-8”); } 这就像在知道容器大小之前呈现HTML一样,然后resize。 这可以在Android Honeycomb中以横向方式在仿真器和设备中重现。 有任何想法吗?

在Android WebView中拦截HTML5video源请求

我有一个应用程序,它在WebView中显示带有video元素的HTML5页面。 我花了一段时间才弄清楚如何让video正常工作,但最后我成功地在三星Galaxy Tab(Android 3.1)上播放嵌入在WebView中的video。 我使用以下代码作为video标记: HTML5 video not supported. video元素有多个源,现在我正在尝试在video开始播放之前捕获所选的video源(和格式)。 当我单击播放按钮时,我看到video文件的HTTP请求到达存储video文件的Web服务器,但我没有成功拦截应用程序端的此请求。 我查看了几种方法来查看video文件的请求是否通过,但我没有看到它通过其中任何一个。 在我的WebViewClient shouldOverrideUrlLoading(WebView view, String url)中,只有初始HTML5页面请求通过。 在我的WebViewClient shouldInterceptRequest (WebView view, String url)中,我看到只传递了初始HTML5页面请求和video海报图像请求,但没有传递video文件。 onShowCustomView(View view, CustomViewCallback callback)仅在我已经播放video时单击HTML5页面上的全屏控制按钮时调用,而不是在我单击播放按钮时调用。 (这种方法的目的是什么?) 有没有人建议我可以捕获video文件的请求的另一种方法,或者任何人都可以解释当我点击video元素上的播放按钮时实际发生了什么?

显示HTML5video全屏

我有一个webview里面有htmlvideo。 我想全屏显示这个video,所以我覆盖了我的WebChromeClient以使用VideoView 。 这在2.3中很有用,但是在4.x onShowCustomView中从不调用。 video仍然会播放,但是,除了点击播放和停止之外,它还可以在webview中播放而无需任何控制。 另外,我有hardwareAccelerated =“true”。 知道为什么永远不会调用onShowCustomView吗? @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); webView = (WebView) findViewById(R.id.webView); webView.getSettings().setSupportZoom(true); webView.getSettings().setLoadWithOverviewMode(true); webView.getSettings().setUseWideViewPort(true); webView.getSettings().setBuiltInZoomControls(true); webView.getSettings().setJavaScriptEnabled(true); webView.getSettings().setDomStorageEnabled(true); webView.getSettings().setPluginState(WebSettings.PluginState.ON); webView.setWebViewClient(new WebViewClient()); webView.setWebChromeClient(new MyChromeClient()); webView.loadUrl(URL); } private class MyChromeClient extends WebChromeClient implements OnCompletionListener, OnErrorListener, OnPreparedListener { @Override public void onShowCustomView(View view, CustomViewCallback callback) { Log.d(“ma”, “onShowCustomView”); } […]

Monkeyrunner不接触webview

我需要测试包含带按钮的WebView的Android应用程序。 Monkeyrunner适用于除WebView之外的应用程序的所有部分。 WebView中的按钮忽略了Monkeyrunner的触摸。 我看到该按钮被点击,因为它变成了灰色但是按钮什么也没做。 如果我在模拟器上使用鼠标或在真实设备上使用鼠标,那么按钮效果很好。 我从logcat看到触摸事件已发送到应用程序,但该应用程序没有任何操作。 一些代码: final WebView w = (WebView) findViewById(R.id.webView1); String summary = “Google”; w.loadData(summary, “text/html”, null); 布局: Monkeyrunner py: from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice device = MonkeyRunner.waitForConnection(10) # android.widget.Button COORDINATES – THIS WORKS FINE device.touch(10,100, ‘DOWN_AND_UP’) # WEBVIEW BUTTON COORDINATES – BUTTON DOESN’T WORK device.touch(200,200, ‘DOWN_AND_UP’) 我曾尝试单独DOWN延迟UP – 相同的结果。 来自Python或Java内部的Monkeyrunner也不起作用。 像ChimpChat这样的monkeyrunner的味道和包装不起作用。 […]