Articles of webview

Android webview后期渲染

我已经在JS(Mootools)和HTML中编写了一个应用程序,它在我的应用程序中加载到webview中。 它只是一个html文件,通过添加或删除nodisplay类来显示或隐藏页面的部分(元素): .nodisplay {display:none} function showPage1() { $$(‘.pages’).addClass(‘nodisplay’); $(‘page1’).removeClass(‘nodisplay’); } 在android 4(xperia arc和galaxy note 2)中,我看到一个奇怪的后期渲染,但我不知道旧版本的行为。 当我隐藏一个元素并显示另一个元素时,它首先显示正确,但在滚动期间,旧元素的某些部分显示为毫秒并立即消失。 这就像非可见区域的渲染被推迟到绘制时刻。 而且有时它只是在隐藏和显示期间做了奇怪的眨眼。 在PC上的chrome中它没有任何问题。 即使在AVD中,它的工作也非常清晰,没有任何眨眼。 我不知道这是否是android的问题,是否有任何方法可以克服它?! 我试过android:hardwareAccelerated=”false”|”true” ,没效果。 以及ws.enableSmoothTransition()也没有解决问题。

“Hello,WebView”教程在Android浏览器中打开请求的地址,而不是在我的webview中

我使用Android模拟器与Android 2.1的AVD我有以下问题:尝试使用webView.loadUrl在WebView中加载URL导致它在浏览器中打开。 注意:我说的是最初的开放, 而不是 WebView中的链接在浏览器中打开的问题,也许它是以某种方式连接的。 我尝试了几件事: 我从清单中删除了 。 这实际上使它正常工作,即将html加载到webview中。 但是,正如人们所预料的那样,它唯一加载的是“无法连接互联网”错误页面。 我调试了项目以确保并且确实在loadUrl函数中,它打开了Android浏览器。 此时的CatLog就是这样的: 05-23 22:54:06.858:INFO / ActivityManager(51):开始活动:Intent {act = android.intent.action.VIEW cat = [android.intent.category.BROWSABLE] dat = http://m.walla .co.il / ErrorPage.aspx?ReturnUrl = / Default.aspx cmp = com.android.browser / .BrowserActivity} 我已经尝试下载一个真实的示例项目(“Hello Android”书籍源文件,项目 – BrowserView)。 但是,它不起作用。 我已经创建了一个新项目,并按照谷歌使用WebView的官方教程中的说明进行操作,并得到了相同的结果。 我没有发现其他任何人抱怨它。 为什么会这样? 谢谢,维塔利

在WebView中打开URL而不是默认浏览器

我正在使用textview上的一些链接创建简单的Webview应用程序,并在webview打开这些链接而不是默认浏览器。 我的textview包含各种不同的URL,我正在尝试打开我的应用程序的webview中的每个链接。 这里代码: tv.setText(“www.google.com www.facebook.com www.yahoo.com”); tv.setMovementMethod(LinkMovementMethod.getInstance());; tv.setText(Html.fromHtml(tv.getText().toString())); Linkify.addLinks(tv, Linkify.WEB_URLS); WebViewClient yourWebClient = new WebViewClient() { // Override page so it’s load on my view only @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { // This line we let me load only pages inside Firstdroid Webpage if ( url.contains(“www”) == true ) // Load new […]

将包html +资源加载到webview中

我想知道如何在webview中显示HTML页面,并引用相对/本地图像。 目标是让android应用程序包本身包含html页面和所有链接的图像。 我需要在哪里放置资产(资产目录?)以及如何引用它们以便加载到webview中? 感谢名单! 斯文

在android中渲染epub文件

我有一个epub文件。 我需要解压缩并解析epub文件并在Webview中呈现它。 某处是否有分步教程。

如何将javascript函数的返回值传递给android?

我想让我的Android应用程序调用一个用javascript编写的函数,并期望从中获得返回值。 我知道WebView.loadUrl是异步工作的,所以我现在要做的是让javascript在完成后通知我的android应用程序,并通过使用javascriptinterface调用java函数传递返回值。 我想知道是否有更好的方法来做这个以及是否有人注意到javascript和android之间的任何消息丢失。

在Android 2.0+上使用WebView中的navigator.geolocation.getCurrentPosition(与PhoneGap相关)

我一直在使用PhoneGap并且它很棒,但是我遇到了在Verizon Droid w / 2.0.1上获得位置的问题(在G1 w / 1.6上按预期工作)。 GeoLocation API支持已添加到Android 2.0(Eclair)中,它可以在Verizon Droid的默认浏览器中使用(在2.0.1上)。 也就是说,如果我访问一个调用navigator.geolocation.getCurrentPosition(success_callback,error_callback)的网站,设备会在一个对话框中提示当前域“想要知道您的位置”,其中包含“共享位置”或“拒绝”选项。 如果我选择“共享位置”,则最终会使用位置数据调用success_callback。 如果我在WebView中访问同一个网站,则对navigator.geolocation.getCurrentPosition的调用不会生成javascript错误,但不会显示“共享您的位置”对话框,也不会调用任何回调。 在logcat中,我看到似乎是一个相关的错误:“02-15 10:37:00.413:ERROR / geolocationService(16871):捕获安全exception从系统注册位置更新。这应该只在DumpRenderTree中发生。” 在我看来,WebView无法注册位置更新,因为它没有所需的权限,而这又是不提示用户获得权限的结果。 虽然在Android 2.0中与GeoPermissions相关的Webkit包中添加了几个方法和对象,但是我无法使用它们中的任何一个来使WebView显示GeoPermission对话框。 以下内容基于Android Developer’s Guide中的Hello,WebView示例,但它添加了2.0中与GeoPermissions相关的一些调用和对象。 *使用适当的url更新(获得作者许可- 感谢Oliver !)。 有没有人能够使这个工作? 任何反馈都会很棒,谢谢! package com.example.android.helloactivity; import android.app.Activity; import android.os.Bundle; import android.webkit.GeolocationPermissions; import android.webkit.WebChromeClient; import android.webkit.WebView; import android.webkit.GeolocationPermissions.Callback; public class HelloActivity extends Activity implements GeolocationPermissions.Callback{ WebView webview; String geoWebsiteURL […]

如果使用webview进行身份validation,如何使用Intentfilter处理OAuth URL回调?

我正在开发一个使用OAuth进行身份validation的应用,但我在处理OAuth回调时遇到了一些问题。 认证 我的应用程序有一个webview作为登录屏幕,我有一个URL来加载我的webview中的身份validation表单 。 让我们说url是: https://myoauthhost.com/oauth/auth?response_type=code&client_id=XXXXXXX&redirect_uri=YYYYYYYY&scope=ZZZZZZZZZZ 在auth活动(AuthActivity.java)中,我有以下内容: String authURL = https://myoauthhost.com/oauth/auth?response_type=code&client_id=XXXXXXX&redirect_uri=YYYYYYYY&scope=ZZZZZZZZZZ myWebView.loadUrl(authURL); 在manifest.xml中,我有以下oauth回调处理: 问题 在webview中使用此url(使用loadURL()方法)会重定向到包含REAL OAUTH WEB FROM的另一个url(应该在webview中加载)。 问题是此重定向会自动启动Android中的意图选择 :由于URL应由Web浏览器处理,因此Android允许您选择手机上可用的Web浏览器之一来打开该URL。 由于这不是我想要的,我必须包含以下代码,以便在webview中处理重定向但不启动Web浏览器(或其他): myWebView.setWebViewClient(new WebViewClient()); 因此,使用此代码,重定向将在“webview”中处理,并显示登录屏幕。 然后我可以输入凭证(例如:通过Twitter的oauth),但是当validation完成后,收到回叫,但是后续处理回调的活动(配置为接收清单中的回调的AuthActivity)不会启动。 相反,我让webview显示一条消息,说明无法findurl回调(在我们的例子中:authprovider:// auth / XXX?xxx = yyy,如清单中所配置)。 原因可能是以下代码: myWebView.setWebViewClient(new WebViewClient()); 前面介绍过,告诉Android webview处理所有事情。 所以现在,由于回调url不是url,因此无法处理它,甚至无法启动可以处理它的意图。 问题 我怎么解决这个问题 ? 我应该能够让活动处理回调,但不要让webview尝试加载它。 任何帮助,将不胜感激 提前致谢

如何在webview上检测滑动手势

我正在开发一个带有RelativeLayout和WebView的简单Android应用程序。 我必须检测从底部到顶部的滑动仅在屏幕左侧的20%处完成。 因此,当用户从下到上在该空间中滑动时,我必须显示自定义对话框。 我尝试的是: import android.app.Activity; import android.view.MotionEvent; import android.view.View; public class ActivitySwipeDetector implements View.OnTouchListener { static final String logTag = “ActivitySwipeDetector”; private Activity activity; static final int MIN_DISTANCE = 100; private float downY, upY; public ActivitySwipeDetector(Activity activity){ this.activity = activity; } public void onRightToLeftSwipe(){ } public void onLeftToRightSwipe(){ } public void onTopToBottomSwipe(){ } public […]

在Android中使用Webview.loadUrl进行渲染时如何显示加载栏?

使用webview显示html页面时, 在完成渲染之前会有几秒钟的空白页面。 为了获得更好的用户体验,有没有办法让它在几秒钟内显示加载图像?