Questions tagged «android-webview»

Android API的一部分。显示网页的视图。该类是您可以滚动自己的Web浏览器或仅在Activity中显示一些在线内容的基础。

12
Android-防止在旋转时重新加载WebView
旋转屏幕时,WebView会重新加载整个页面。我无法使用此功能,因为我的某些内容包含动态/随机材料。当前,屏幕旋转时会从loadUrl()方法重新加载原始URL。 知道我的代码有什么问题吗? MainActivity.java package com.mark.myapp; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.KeyEvent; import android.view.Menu; import android.webkit.WebView; import android.webkit.WebViewClient; public class MainActivity extends Activity { WebView web; String webURL = "http://www.google.co.uk/"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if (savedInstanceState != null) ((WebView)findViewById(R.id.web)).restoreState(savedInstanceState); web = (WebView) findViewById(R.id.web); web.getSettings().setJavaScriptEnabled(true); web.loadUrl(webURL); …


6
使用Android WebView加载现有的.html文件
我确实尝试了以下示例,来自Google代码的演示以及其他资源 WebView,但是当我尝试用自己的代码进行操作时,它对我不起作用。 我想加载myfile.html我放在资产文件夹中的文件,并使用: private WebView myWebView; myWebView.loadUrl("file:///android_assets/myfile.html"); 在模拟器上显示错误 file:///android_assets/myfile.html无法加载以下位置的网页:未找到所需的文件。 /android_assets/myfile.html 当我将该文件放到文件res/raw/夹并使用时: myWebView.loadUrl("file:///android_res/raw/myfile.html"); 那么只有模拟器android 2.2 API级别8可以加载文件,其他旧版本则显示相同的错误。我想念什么吗? 有什么方法可以在适用于所有API版本的应用程序包中加载现有的.html文件吗?

7
如何从WebView获取网页内容?
在Android上,我WebView正在显示一个页面。 如何获得页面源而不再次请求页面? 似乎WebView应该有某种getPageSource()返回字符串的方法,但可惜没有。 如果启用JavaScript,则在此调用中放入适当的JavaScript以获取内容是什么? webview.loadUrl("javascript:(function() { " + "document.getElementsByTagName('body')[0].style.color = 'red'; " + "})()");

4
WebView方法在同一线程上出错
我有一个android程序(在webview中为Java + html)。我可以从javascript调用Java代码。但是另一种方式停止了工作(在Eclipse中更新之后)。 所以这就是我想要做的 制作网络视图(有效) 在JavaScript中调用AndroidFunction.test(); (工作) java test()函数调用webView.loadUrl(“ javascript:helloBack()”); (!不再工作了) 我试图让它与MainActivity中的WebView一起使用,但是没有起作用。 MainActivity.java public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final WebView webView = (WebView)findViewById(R.id.webView); webView.getSettings().setJavaScriptEnabled(true); webView.setWebChromeClient(new WebChromeClient()); WebSettings webSettings = webView.getSettings(); webSettings.setJavaScriptEnabled(true); javascr = new Javascript(this, webView); webView.addJavascriptInterface(javascr, "AndroidFunction"); webView.loadUrl("file:///android_asset/www/index.html"); .... } Java脚本 public class Javascript { Context cont; …

3
JS对象中的键(字符串)的长度是否有限制?
因此,我们有一个对象,键是id(int),值是字符串的情况。但是我们注意到,在大多数情况下,我们是根据字符串查找id的,因此我们决定将其取反并以字符串作为键,而值就是id。因为这样,我们无需执行每个项目并比较值,而是可以这样做var id = storage[text];。以下是我们所做的示例。 这是旧实现的示例: var storage = { 0 : null, 1 : "Hello", 2 : "world!", 3 : "How are you?" } 这是新实现的示例: var storage = { "null" : 0, "Hello" : 1, "world!" : 2, "How are you?" : 3 } 我知道,现在字符串是关键,并且可以为相同的字符串获取相同的ID。但是由于现在字符串可能非常巨大(机会很小,但每个字符串最大可能为1KB),因此对对象键是否设置了长度限制JS或Android Webview? 而且,此实现是否有缺点?到目前为止,我还没有发现任何问题,但是您永远不会知道。

8
如何设置网页视图的初始缩放/宽度
我正在尝试使WebView具有与android浏览器类似的行为。浏览器以试图使其宽度适合屏幕的方式打开所有页面。但是,WebView的默认行为是从100%像素比例开始,因此它开始在左上角放大。 在过去的几个小时中,我试图找到一种方法来使WebView像在浏览器中一样将页面缩放到屏幕上,但是我没有运气。有没有人找到实现这一目标的方法? 我看到的是一个名为setLoadWithOverviewMode的设置,但这似乎根本没有做任何事情。我还尝试了setInitialScale,但在不同的屏幕尺寸和网页尺寸上却没有浏览器缩放那样优雅。 任何人都有线索吗? 谢谢 编辑:Brian的方法似乎在手机处于横向而不是纵向时有效。在纵向中,它很接近,但仍不能适合页面中的整个屏幕。我希望以此为出发点,希望能有一种可靠的方法来使初始缩放比例适合页面在任何方向或屏幕尺寸下的宽度。

9
WebView中的内存泄漏
我有一个使用嵌入WebView的xml布局进行的活动。我根本没有在活动代码中使用WebView,它所做的只是坐在xml布局中并且可见。 现在,当我完成活动时,我发现我的活动没有从内存中清除。(我通过hprof转储检查)。但是,如果我从xml布局中删除WebView,则该活动将完全清除。 我已经尝试过 webView.destroy(); webView = null; 在我活动的onDestroy()中,但这没有太大帮助。 在我的hprof转储中,我的活动(名为“浏览器”)具有以下剩余的GC根(调用后destroy()): com.myapp.android.activity.browser.Browser - mContext of android.webkit.JWebCoreJavaBridge - sJavaBridge of android.webkit.BrowserFrame [Class] - mContext of android.webkit.PluginManager - mInstance of android.webkit.PluginManager [Class] 我发现其他开发人员也经历过类似的事情,请参见Filipe Abrantes的回复:http ://www.curious-creature.org/2008/12/18/avoid-memory-leaks-on-android/ 确实是一个非常有趣的帖子。最近,我很难对Android应用程序中的内存泄漏进行故障排除。最后,事实证明,我的xml布局包含一个WebView组件,即使不使用它,也阻止了屏幕旋转/应用重启后对内存进行g收集……这是当前实现的错误,还是存在某些问题使用WebView时需要做的特定工作 现在,很遗憾,博客或邮件列表上尚未收到有关此问题的答复。因此,我想知道是SDK中的错误(可能类似于http://code.google.com/p/android/issues/detail?id=2181报告的MapView错误)还是如何完全获取活动嵌入了Webview的内存?

3
通过Android WebView从JavaScript调用Java函数
我想在我的Android应用程序中对某些Java代码进行同步调用。 我正在使用此解决方案:https : //stackoverflow.com/a/3338656 我的Java代码: final class MyWebChromeClient extends WebChromeClient { public boolean onJsAlert(WebView view, String url, String message, JsResult result) { Log.d("LogTag", message); result.confirm(); return true; } } 我的JavaScript代码: <html> <script> function java_request(){ alert('test'); } </script> <body> <h2>Welcome</h2> <div id="area"></div> <form> <input type="button" value="java_call" onclick="java_request()"> </form> </body> </html> 当我点击java_call按钮时,按钮进入按下状态。我可以'test'在控制台日志中看到。一切正常,直到这里。 …


11
Android WebView“电话:”链接显示未找到网页
我试图让我的android webview应用程序打开tel:手机链接。每次我打开电话链接时,它都会很好地工作并打开电话。但是,一旦完成通话并返回到应用程序,该页面就会显示“找不到网页tel:0000000000”。然后,我必须再次单击“后退”按钮才能进入单击电话号码的页面。 有没有办法让它打开TEL链接而不尝试在Webview中查找页面并在电话中打开它? 这是我在WebView中使用的代码,以覆盖其对TEL和Mailto链接的处理: public boolean shouldOverrideUrlLoading(WebView view, String url) { if (url.startsWith("mailto:") || url.startsWith("tel:")) { Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); startActivity(intent); } view.loadUrl(url); return true; } 任何帮助,将不胜感激。我在过去的2个小时里一直在搜索古德,但未能给出任何答案。

1
剪贴板API调用抛出NotAllowedError而不调用onPermissionRequest()
这赏金已经结束。这个问题的答案有资格获得+50声望奖励。赏金宽限期在13小时内结束。 cyqsimon希望引起更多对此问题的关注。 我有一个带有按钮的简单页面,当按下按钮时,该页面使用Async Clipboard API写入剪贴板。 <body> <button type="button" onclick="testClipboard();"> Test Clipboard </button> </body> function testClipboard() { navigator.clipboard.writeText("Clipboard API Test").then( v => alert("Success"), e => alert("Fail\n" + e)); } 这适用于Chrome和Firefox,台式机和移动设备。但是,在Android Webview上,它引发以下错误: NotAllowError: Write permission denied. 我认为我需要重写WebChromeClient.onPermissionRequest()以授予许可,但是奇怪的onPermissionRequest()是似乎没有被调用,并且仍然抛出相同的错误。 public class WebChromeController extends WebChromeClient { @Override public void onPermissionRequest(PermissionRequest request) { Log.d("myTag", "Permission request"); …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.