Articles of webview

检测Webview错误和显示消息

我想在加载webview页面时出错(无连接)时显示错误消息。 这是我到目前为止,没有error handling代码: public class TrackerPage extends Activity { // @Override private WebView webview; private ProgressDialog progressDialog; private boolean error; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Get rid of the android title bar requestWindowFeature(Window.FEATURE_NO_TITLE); // Set the XML layout setContentView(R.layout.tracker_page); // Bundle objectbundle = this.getIntent().getExtras(); webview = (WebView) findViewById(R.id.tracker); final Activity activity = […]

Javascript回调函数传递给Android

我有一个用Java实现的javascript接口,由我在webview中加载的javascript代码调用。 JS Inside webview: Android.myFunction(function(data){ console.log(data); }); Java的: public class JavaScriptInterface { Context context; WebView webView; JavaScriptInterface(Context c, WebView w) { context = c; webView = w; } public void myFunction(String callback) { //when I log callback, it is “undefined” String someData = “Yay for data”; String js = “javascript:(function() { ” + “var callback […]

如何拦截android webview中的POST数据

我有一个由webview组成的Android应用程序。 它需要允许用户在网页上填写表单,然后在用户单击submit上的submit后更改表单的数据。 表单将使用POST请求方法。 所以我的问题是, 我如何拦截表单中的POST数据,更改它的值,然后发送它? 例如:如果有这样的Web表单…… 如果用户在表单中输入name = Steve和email = steve@steve.com,我想在Android应用程序中将值更改为name = bob和email = bob@bob.com并将新POST发送到http://www.example.com/do.php 。 谢谢你的帮助!

Android – WebView =网页不可用

在我的应用程序中使用WebView视图时,无论我强行访问哪个页面,它都说没有find网页 。 这是我的代码: MainActivity.java package com.testing.webview; import android.app.Activity; import android.os.Bundle; import android.webkit.WebSettings; import android.webkit.WebView; public class MainActivity extends Activity { @Override public void onCreate( Bundle savedInstanceState ) { super.onCreate(savedInstanceState); setContentView(R.layout.main); WebView webView = (WebView) findViewById(R.id.webView1); WebSettings webSettings = webView.getSettings(); webSettings.setBuiltInZoomControls(true); webView.loadUrl(“http://www.google.com”); } } main.xml 你可以看到它是非常基本的代码。 确实有互联网连接,因为我可以打开正常的浏览器应用程序并像平常一样访问任何网页。

Android webview加载数据性能非常慢

嗨,我正在研究一个应用程序,因为我正在使用Android WebView。 每当我启动webview活动时,从test.txt文件加载字符串html格式的数据。 test.txt文件包含近2.5 MB的数据,加载test.txt文件后,如果幻灯片屏幕结束,则读取所有数据并按回。 然后随后启动webview活动需要更多时间来呈现数据。 在第一次推出webview时,它花费的时间很少。 在启动此活动之间,我没有收到任何错误/exception/崩溃。 我使用的是Android API等级18及以上版本 注意:我在这个问题上做了很多研究。 我尝试从Android webview的解决方案慢和Android WebView性能没有用。 我不能使android:hardwareAccelerated =“true” < – 为什么因为它有很多副作用(我仍然使用这个,但我没有在这个问题上发现任何变化)。 我不能使用webview.getSettings()。setRenderPriority(RenderPriority.HIGH); setRenderPriority() – >此方法在API级别18中已弃用。建议不要调整线程优先级,并且在将来的版本中不支持此方法。 我的DataLoader.java类 public class DataLoader extends Activity { private WebView webView = null; // Progress Dialog private ProgressDialog progressDialog; String dataContent = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.web_view); webView = […]

Android WebView无法加载混合内容

我正在尝试使用WebView制作应用程序,但网站使用https ,但内容(例如mp3文件)使用http ,因此Android Lollipop不会加载它,因为它是“混合内容”。 我试图使用onReceivedSslError handler.proceed(); ,但它没有加载任何东西。 有办法解决吗? 或者我可以让所有网站加载使用http ,所以它没有显示任何错误?

滚动位置位于顶部时,SwipeRefreshLayout + WebView

我正在尝试将SwipeRefreshLayout与WebView一起使用。 我面临的问题是在页面中间,当用户向下滚动时,不必要的刷新开始。 如何在webview的滚动位置位于顶部时才进行刷新事件。 (即,他正在查看页面的顶部)?

让Facebook登录使用Android Webview

我只是想在Android上的WebView上实现facebook登录。 问题是我点击HTML页面上的facebook按钮并在Facebook对话框中插入用户名和密码。 url重定向只是给我一个黑页。 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); WebView webview = new WebView(this); webview.setWebChromeClient(new WebChromeClient()); webview.getSettings().setPluginState(PluginState.ON); webview.getSettings().setJavaScriptEnabled(true); webview.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE); webview.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); webview.setWebViewClient(new WebViewClient()); webview.loadUrl(“http://peoplehunt.crowdscanner.com/hunt”); setContentView(webview); 这是我的HTML页面上的Facebook常规JavaScript API,当点击facebook按钮时会调用此函数。 $(“#login_facebook”).click(function() { FB.login(function(response) { //This function should be called if (response.authResponse) { FB.api(‘/me?fields=name,email,picture,id&type=large’, function(response) { //console.log(“email “+response.email); $(“#submitHandle”).hide(); $(“#loader”).show(); //console.log(‘Good to see you, ‘ + response.picture + ‘.’); […]

如何根据内容动态缩小WebView大小?

从这个问题可以理解问题的详细解释,因为用户添加了图像以更好地解释它。 我在WebView中加载Html内容。 我的布局有很多视图,WebView位于ScrollView中(根据布局要求)。 请不要回答 – “Don’t put WebView inside ScrollView” 。 我知道将WebView放在ScrollView中并不是一件好事,但是根据要求我需要这样做。 所以,我有左片段(显示列表项)和右片段(显示从左片段中选择列表项反映的数据)。 现在,首先当我在WebV中加载Html内容时,它显示正确。 之后,当我使用新的Html内容刷新WebView时,会出现问题。 假设,我的第一个Html内容是正确显示的100行,然后我用新的Html内容重新加载WebView,这是40行然后WebView没有收缩并且适合40行的内容,它仍然只要100在底部显示白色/空白区域的线条。 因此,似乎WebView能够从较少的内容重新调整自身大小,这些内容先前已加载到更多内容,但在内容少于先前加载的内容时无法重新resize。 我尝试了很多方法, 在Manifest中添加android:hardwareAccelerated=”true” 这个博客 还有很多其他方式和博客 我也尝试过使用mWebView.clearView(); 这导致重新调整WebView的大小,但有时WebView开始闪烁,这只是令人讨厌。 与此video类似 但是,找不到任何适当的解决方案。 如果您有任何人遇到同样的问题,请让我知道我可以申请的最佳解决方案。 更新 – 经过进一步的谷歌搜索,似乎这是Honeycomb中一个众所周知的问题。 这个问题也表明了类似的问题。

如何在Android后台服务中运行cordova插件?

我正在研究在cordova上开发的移动应用程序。 我想实现一个后台服务,它做一些工作,比如打开套接字连接同步本地数据库和远程服务器,并通知用户新的远程推送等。 关键是我在javascript中实现了这个代码,但我想在后台执行它。 我在互联网上搜索了一个cordova后台服务插件。 katzer /cordova-插件背景模式 jocull / PhoneGap的-backgroundjs 红色文件夹 我认为最好的是红色文件夹,但它只是为了Android而且它不允许我编写javascript来在后台执行。 但只是在java和javascript之间交换json。 我已经阅读了一些关于android中后台服务的主题,这些是我发现的有用的: 创建一种服务上,Android的使用,PhoneGap的应用 简单的Android服务,例如代码,描述起停服务 机器人-使用-网页视图的外一个活动上下文 所以我开始编写cordova插件(主要是在android上)来在后台执行javascript代码。 我从后台服务创建了一个webview来执行它的javascript。 这在我执行普通javascript时工作正常,但是当涉及到cordova插件时,它失败,例如设备device.uuid给出null 。 这是java服务代码: public void onStart(Intent intent, int startId) { Toast.makeText(this, “My Happy Service Started”, Toast.LENGTH_LONG).show(); createBackGroundView(); super.onStart(intent,startId); } public void createBackGroundView(){ WindowManager windowManager = (WindowManager) getSystemService(WINDOW_SERVICE); LayoutParams params = new WindowManager.LayoutParams( android.view.ViewGroup.LayoutParams.WRAP_CONTENT, android.view.ViewGroup.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.TYPE_PHONE, WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE, PixelFormat.TRANSLUCENT […]