Articles of webview

在Android中维护cookie会话

好的,我有一个包含表单的android应用程序,两个EditText,一个微调器和一个登录按钮。 用户从微调器中选择服务,键入其用户名和密码,然后单击登录。 数据通过POST发送,返回响应,处理,启动新的WebView,加载响应生成的html字符串,并且我拥有用户选择的任何服务的主页。 这一切都很好。 现在,当用户点击链接时,无法find登录信息,并且该页面要求用户再次登录。 我的登录会话被丢弃了,我不确定如何将控制应用程序主要部分的类中的信息传递给刚刚启动webview活动的类。 表单登录按钮中的onClick处理程序: private class FormOnClickListener implements View.OnClickListener { public void onClick(View v) { String actionURL, user, pwd, user_field, pwd_field; actionURL = “thePageURL”; user_field = “username”; //this changes based on selections in a spinner pwd_field = “password”; //this changes based on selections in a spinner user = “theUserLogin”; pwd = “theUserPassword”; […]

WebView未加载网页

我正在使用WebView加载网站。 但它非常慢,并且在加载特定网站时会泄漏。 我正在使用以下代码加载WebView 。 @Override protected void onNewIntent(Intent intent) { if (intent.getStringExtra(“url”) != null) { webView.loadurl(intent.getStringExtra(“url”)); } } 但我正在调用webView.loadUrl(Config.URL); 使用以下内容初始化WebView后, onCreate()方法中的( Config.URL可能包含与上面指定的相同的url)。 this.webView = (WebView) findViewById(R.id.wv); this.webView.getSettings().setJavaScriptEnabled(true); this.webView.getSettings().setLoadsImagesAutomatically(true); this.webView.getSettings().setDomStorageEnabled(true); this.webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); MyClient client = new MyClient(WebActivity.this, (ProgressBar)findViewById(R.id.progressBar)); webView.setWebViewClient(client); 从onCreate()加载一个正常工作(不好,它太慢)。 但是从onNewIntent()加载的相同URL 无法正常工作! 。 在onNewIntent()中onNewIntent()此操作后,没有使用onNewIntent()加载URL,并且当前页面变得不可移动。 即。 滚动条在WebView中移动但页面不滚动。 我在onCreate()测试了相同的URL并且它正在工作。 为此,我正在通过url intent.putExtra(“url”, Config.URL+targetUrl); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP); 具有来自通知的未决意图。 虽然它在一些设备上工作,即Google Nexus。 但它并不适用于大多数手机。 […]

iframevideo不会在Android网页视图中进入全屏模式

我目前正在开发基于网站的Android应用程序。 iOS应用程序已经存在,我必须尊重一些代码以保持一致性。 一切都差不多完成了,但我刚刚发现了一个有趣的问题:当使用webview(我对显示的页面没有任何控制)的iframevideo页面(Youtube,Dailymotion)时,它不会全屏显示,即使我按下播放器的按钮。 我已经尝试了几乎所有在这里find的东西,但它只涉及我知道你需要显示哪些页面的应用程序。 这是应用程序的webActivity部分的代码: public class WebActivity extends Activity { String targetURL = “”; String title = “”; WebView wv; @Override public void onResume() { super.onResume(); CookieSyncManager.getInstance().startSync(); } @Override public void onPause() { super.onPause(); CookieSyncManager.getInstance().stopSync(); } /** Called when the activity is first created. */ @SuppressLint(“SetJavaScriptEnabled”) @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().requestFeature(Window.FEATURE_PROGRESS); […]

为什么Android WebView没有加载youtube HTML5 iframevideo?

我尝试了以下方法: WebView wv = (WebView) findViewById(R.id.webView1); String playVideo= “”; wv.getSettings().setPluginsEnabled(true); wv.getSettings().setAllowFileAccess(true); wv.getSettings().setPluginState(PluginState.ON); wv.getSettings().setBuiltInZoomControls(true); wv.getSettings().setJavaScriptEnabled(true); wv.loadData(playVideo, “text/html”, “utf-8”); 我只看到缩略图然后当我点击它时,框架变成黑色并且不加载video。 我的目标是API 15,我有互联网许可。 我如何在Android webview中运行html5 youtube iframevideo?

Android浏览器从完整限定符中删除https://方案

在我的应用程序中,我在CustomTabsIntent或WebView中显示一个外部HTML站点: if (customTabsIntent != null) customTabsIntent.launchUrl(this, Uri.parse(“http://some.where.com/site.html”)); else startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(“http://some.where.com/site.html”))); 但该HTML的风格已经更新,但我的智能手机显示旧样式(旧字体等)。 在* .html文件中有一个* .css引用: 在* .css文件中,引用了单独的字体; 例如: @font-face { font-family: ‘MyFontRegular’; src: url(‘https://www.openfont.org/assets/mail/fonts/MyFontWeb-Regular.woff’) format(‘woff’), url(‘https://www.openfont.org/assets/mail/fonts/MyFontWeb-Regular.eot’) format(’embedded-opentype’); } 正如我所说,智能手机中的Chrome浏览器不会显示引用的字体,因为它会关闭http://或https:// 。 当我手动将该方案添加到地址栏中时,将显示正确的样式。 当我从Android应用程序调用它时,如何在我的android浏览器的地址字段中强制https://方案?

Android webview,在assets文件夹中加载javascript文件

我已经看过很多次这个问题,但仍然无法让我的代码工作。 我希望我的webview加载一些URL(例如www.google.com),然后应用存储在assets/jstest.js一些javascript,其中包含以下内容: function test(){ document.bgColor=”#00FF00″; //turns to green the background color } 这是我尝试加载JS的地方: @Override public void onPageFinished(WebView view, String url){ view.loadUrl(“javascript:(function() { ” + ” document.bgColor=’#FF0000′;” //turns to red the background color + ” var script=document.createElement(‘script’); ” + ” script.setAttribute(‘type’,’text/javascript’); ” + ” script.setAttribute(‘src’, ‘file:///android_asset/jstest.js’); ” + ” script.onload = function(){ ” + ” test(); […]

如何在Android webview中禁用水平滚动

我想在我的webview中只进行垂直滚动,不希望任何水平滚动。 webSettings.setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN); 这有助于我解决滚动问题。 但使用这个使我的webview看起来很奇怪。 所有编辑文本的高度被挤压(垂直)并且看起来很糟糕。 有没有其他方法可以禁用客户端的水平滚动? 使用SINGLE_COLUMN我们如何避免webview高度变化问题? 我希望垂直外观与以前没有SINGLE_COLUMN的情况相同

自动填写webview中的字段

我已经看到这个问题浮现在互联网上,但我还没有find一个有效的解决方案。 基本上,我想加载我的应用程序并按下按钮; 然后,按钮操作将在已经加载到webview中的网站中填写用户名和密码(或等待onPageFinished)。 最后,将激活登录页面上的提交按钮。 根据我的理解,这可以通过使用loadUrl(javascript)进行java注入来完成,但我不知道填写字段的java命令是什么。 针对iOS提出了同样的问题,但命令略有不同。 是否有可能在webivew中使用javascript做我要求的事情,或者我是否必须在没有像这样或这样的webview的情况下做一个http-post? 非常感谢您提供任何帮助!

Android WebView – 使用Javascript设置HTML字段焦点

我有一个只有一个可见的WebView组件的应用程序,它用于显示一些动态生成的HTML(也可以运行Javascript)。 它已启用WebView 。 对于几个页面,我试图在页面加载完成后设置其中一个输入文本框的焦点 – 不是通过 Body onLoad() ,而是在页面完成加载后,即在onPageFinished()通过JS调用。 大多数javascript执行正常 webview.loadURL(“javascript:JSMethod();”); 但是当我使用相同的调用来执行document.getElementById(‘text1’).focus() – 光标确实到达元素但Soft Keyboard不会popup。 从页面上的按钮执行时,相同的javascript代码确实具有所需的效果。 我附加了有3个按钮的源代码 Focus Text1 – 将光标放在text1上并popup软键盘。 Java Focus Text1 – 调用Java来执行相同的JS。 仅显示光标,不popup键盘 Java Focus Text1 And Keyboard Open – 从Java和Forces键盘调用JS打开。 我的理解是JS执行应该是相同的,无论是使用按钮/事件从浏览器执行还是通过WebView.loadURL()从Java发送。 这是我的查询 我在使用Button#2时遗漏了什么? 这就是我当前代码的方式,我只看到光标已设置但SoftKeyboard无法打开。 当我使用Button#3写入的逻辑时,我有时看不到光标在场上但是给了我想要的效果,当我在popup的键盘中输入内容时光标变得可见。 我在Button#2看到的行为可能是Android JS执行中的错误吗? 或者可能是WebView没有焦点,这就是为什么只显示光标? 我也试过webview.requestFocus() – 我不能写requestFocusOnTouch()因为它是我唯一的View,我希望它能自动聚焦。 演示行为的Java代码是 import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.util.Log; […]

错误/ Web控制台:未捕获TypeError:无法在http://m.youtube.com/:844调用null的方法’getItem’

以下错误来自Android(WebView),而不是直接来自我自己的代码: 04-28 12:36:15.174: ERROR/Web Console(7604): Uncaught TypeError: Cannot call method ‘getItem’ of null at http://m.youtube.com/:844 除了将该URL加载到WebView之外,我真的没有做任何特别的事情。 大多数时候我没有得到这个错误,所以我假设这可能指向一些不可靠的网络条件? 也许youtube.com太忙了? 这很难说。 无论如何,我想至少知道可能导致这种情况的原因以及我是否可以捕获该错误以便我能够更好地处理它。 同样,我自己的代码不知道getItem是什么。 另一方面,出现此问题时,我的WebView上的YouTube页面只是空白 。 见解? 编辑:我一直在寻找有关建议WebSettings.setDomStorageEnabled(true)文档。 到目前为止我能find的唯一提示是在这个SO线程中 :正如我之前提到的,这个问题很少发生,并且自从我发布问题以来没有发生过。 所以我必须先了解一下这个与“DOM存储”之间的联系,然后才能设计出一种方法来测试/validation这是否能解决问题。 另外,我刚刚遇到另一条错误消息(带有良性结果,所以看起来似乎): 05-02 00:44:45.823: ERROR/Web Console(1595): dojo.back.init() must be called before the DOM has loaded. If using xdomain loading or djConfig.debugAtAllCosts, include dojo.back in a build layer. at […]