标签: webview

是否可以从WebView获取HTML代码

我想抢先获取要加载的网页的HTML代码,webView使用正则表达式解析它,并只显示我想要的HTML代码,同时让网页仍然认为它已经加载了所有内容.

有没有办法在WebViewClient.onLoadResource()相似的方法中做到这一点?

编辑:我试过这个:

class MyJavaScriptInterface  
 {  
      @SuppressWarnings("unused")  
         public void showHTML(String html, Context context)  
         {  
            new AlertDialog.Builder(context)  
                 .setTitle("HTML")  
                 .setMessage(html)  
                 .setPositiveButton(android.R.string.ok, null)  
             .setCancelable(false)  
             .create();  
               pageHTML = html;
         }  
 }

@Override
    public void customizeWebView(final ServiceCommunicableActivity activity, final WebView webview, final SearchResult mRom) {
        mRom.setFileSize(getFileSize(mRom.getURLSuffix()));
        webview.getSettings().setJavaScriptEnabled(true);
        MyJavaScriptInterface interfaceA = new MyJavaScriptInterface();
        webview.addJavascriptInterface(interfaceA, "HTMLOUT");  
        WebViewClient anchorWebViewClient = new WebViewClient()
        {
            @Override  
            public void onPageFinished(WebView view, String url)  
            {  
                /* This call inject JavaScript into the page which just finished loading. */ …
Run Code Online (Sandbox Code Playgroud)

html android webview

25
推荐指数
2
解决办法
5万
查看次数

使用webview打开新的android活动会显示空白(白色)屏幕而不是html内容

我已经研究了2天,我在互联网上的任何地方都没有发现类似的问题!

在主要活动中,我正在尝试打开一个包含webview的新活动,该活动将在android_asset文件夹中显示一个html页面(about.html).

我能够在正确显示webview的情况下启动新活动(test.java),但网页内容却没有显示出来.甚至显示webview的垂直滚动条(因为页面内容相对较长),我可以上下滚动页面但没有内容!

package com.example.test;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.Uri;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.TextView;

public class test extends Activity {
private TextView apppagetitle;
private WebView browser_rn;

@Override
public void onCreate(Bundle saveInstanceState) {
    super.onCreate(saveInstanceState);

    setContentView(R.layout.test);

    browser_rn=(WebView)findViewById(R.id.webkit);
    browser_rn.getSettings().setJavaScriptEnabled(true);
    browser_rn.getSettings().setPluginsEnabled(true);
    browser_rn.setScrollBarStyle(0);       

    final AlertDialog alertDialog = new AlertDialog.Builder(this).create();
    apppagetitle=(TextView)findViewById(R.id.apppagetitle);


    browser_rn.setWebViewClient(new WebViewClient() {

        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return …
Run Code Online (Sandbox Code Playgroud)

android webview

25
推荐指数
2
解决办法
2万
查看次数

如何修复"因为我们正在等待WebCore的触摸响应而错过拖动"

我正在开发一个基于webView的Android应用程序,并试图捕获触摸事件.但是它不起作用,我在日志中看到了这条消息:

"我们正在等待WebCore的触摸响应"

有谁知道如何解决这个问题?

javascript android webview

25
推荐指数
1
解决办法
8698
查看次数

如何根据内容动态缩小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能够从较少的内容重新调整自身大小,这些内容先前已加载到更多内容,但在内容少于先前加载的内容时无法重新调整大小.

我尝试了很多方法,

  • 添加android:hardwareAccelerated="true"清单
  • 这个博客
  • 还有很多其他方式和博客
  • 此外,我曾尝试使用mWebView.clearView();哪个导致重新调整WebView的大小,但有时WebView开始闪烁,这只是令人讨厌.与此视频类似

但是,找不到任何合适的解决方案.如果你们中的任何人遇到同样的问题,请让我知道我可以申请的最佳解决方案.

更新 -

经过进一步的谷歌搜索,似乎这是Honeycomb中一个众所周知的问题.这个问题也表明了类似的问题.

performance android webview android-widget android-layout

25
推荐指数
1
解决办法
3万
查看次数

Android,抓住webview重定向网址

我的网页视图加载了一个网址 - 在完成加载后 - 更改为另一个网址.我怎样才能抓住新的网址.getURL()总是返回第一个网址而不是第二个网址.如果我使用浏览器,我可以看到新的URL但是我无法从webview获得.

android webview android-webview

25
推荐指数
2
解决办法
3万
查看次数

Android Webview Anchor Link(跳转链接)不起作用

我的Android应用程序中有一个WebView,它使用loadDataWithBaseURL()方法加载HTML字符串.问题是本地锚链接(<a href="#link">...)无法正常工作.单击链接时,它将突出显示,但不会滚动到相应的锚点.

如果我使用WebView的loadUrl()方法加载包含锚链接的页面,这也不起作用.但是,如果我在浏览器中加载相同的URL,则锚链接可以正常工作.

是否需要特殊处理才能使这些工作适用于WebView?

我正在使用API​​ v4(1.6).

代码并不多,这里是我一直在使用的一些测试代码的相关部分:

WebView detailBody = (WebView) findViewById(R.id.article_detail_body);
String s = "<a href=\"#link\">LINK!</a><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><a name=\"link\"></a>Testing!";
detailBody.loadDataWithBaseURL(API.HomeURL(this), s, "text/html", "utf-8", "");
Run Code Online (Sandbox Code Playgroud)

anchor android webview

24
推荐指数
3
解决办法
3万
查看次数

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

我正在研究在cordova上开发的移动应用程序.我想实现一个后台服务,它做一些工作,比如打开套接字连接同步本地数据库和远程服务器,并通知用户新的远程推送等.关键是我在javascript中实现了这个代码,但我想在后台执行它.

我在互联网上搜索了一个cordova后台服务插件.

我已经阅读了一些关于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
           );

        params.gravity = Gravity.TOP | Gravity.LEFT;
        params.x = 0;
        params.y = 0;
        params.width = 200;
        params.height = 200;

        LinearLayout view = new LinearLayout(this);

        view.setLayoutParams(new RelativeLayout.LayoutParams( …
Run Code Online (Sandbox Code Playgroud)

javascript mobile android webview cordova

24
推荐指数
2
解决办法
3万
查看次数

当调用didFinishNavigation时,WKWebView没有完成加载--WKWebView中的Bug?

目标:在网站加载完成后截取WKWebView的截图

采用的方法:

  • 在UIViewController中定义了WKWebView var
  • 创建了一个名为screen capture()的扩展方法,它获取了WKWebView的图像

  • 使我的UIViewController实现WKNavigationDelegate

  • 设置wkwebview.navigationDelegate = self(在UIViewController init中)

  • 在UIViewcontroller中实现didFinishNavigation委托func,为WKWebView调用屏幕捕获扩展方法

func webView(webView: WKWebView, didFinishNavigation navigation: WKNavigation!) {
    let img = webView.screenCapture()
}
Run Code Online (Sandbox Code Playgroud)

问题:

  • 当我调试i模拟器时,我注意到控件到达didFinishNavigation()函数,即使网站尚未在WKWebView中呈现
  • 相应地,拍摄的图像截图是白色斑点.

我在这里错过了什么?我查看了WKWebView的所有可能的委托函数,没有其他任何东西似乎代表WKWebView中内容加载的完成.如果有解决方法,将不胜感激


更新:添加我用于截取Web视图截屏的截图代码

class func captureEntireUIWebViewImage(webView: WKWebView) -> UIImage? {

    var webViewFrame = webView.scrollView.frame
    if (webView.scrollView.contentSize != CGSize(width: 0,height: 0)){
    webView.scrollView.frame = CGRectMake(webViewFrame.origin.x, webViewFrame.origin.y, webView.scrollView.contentSize.width, webView.scrollView.contentSize.height)

    UIGraphicsBeginImageContextWithOptions(webView.scrollView.contentSize, webView.scrollView.opaque, 0)
    webView.scrollView.layer.renderInContext(UIGraphicsGetCurrentContext())
     var image:UIImage = UIGraphicsGetImageFromCurrentImageContext()
     UIGraphicsEndImageContext()

     webView.scrollView.frame = webViewFrame         
     return image
    }

    return nil
 }
Run Code Online (Sandbox Code Playgroud)

objective-c webview ios swift

24
推荐指数
4
解决办法
3万
查看次数

如何在Chrome自定义标签android中隐藏网址

我在android中实现了新的Chrome Custom Tab,我使用以下代码打开

Uri uri = Uri.parse("https://akash.plobal.com/ploicy");
CustomTabsIntent.Builder intentBuilder = new CustomTabsIntent.Builder();                   
intentBuilder.setToolbarColor(Color.BLACK);
intentBuilder.setShowTitle(true);
intentBuilder.build().launchUrl(getActivity(), uri);
Run Code Online (Sandbox Code Playgroud)

我需要隐藏工具栏中标题下方的URL

在此输入图像描述

android webview chrome-custom-tabs

24
推荐指数
1
解决办法
8354
查看次数

Web Google Auth - 403 的解决方法:disallowed_useragent 存在吗?

StackOverflow 上有很多关于此问题的帖子,但没有一个为 Web 应用程序提供解决方法,以便在嵌入式浏览器(如 iOS 上的 Facebook/Facebook Messenger)中通过 Google Web Auth 登录服务;但我发现 Pinterest 的网络登录与 Google 按钮似乎可以正常工作,所以我想知道是否有人知道如何让它工作。

几年前,Google 禁止从 webview 登录 Google , Auth0 也发表了一篇有关解决方法的博客文章,但这一切似乎都集中在本机应用程序上,而不是提供 Google 作为登录选项的 Web 应用程序。

但我公司的应用程序是一个网络应用程序,我们希望当有人在 Facebook Messenger/Facebook 帖子上分享我们网站的链接时,用户可以使用 Google 登录,即使他们没有弹出本机 Safari 浏览器。根据上述文档,这似乎是不可能的 - 但实际上我发现 Pinterest 的“使用 Google 登录”按钮确实有效!所以看来有一种方法可以让 Google 登录正常工作(不确定他们是否与 Google 达成了特殊协议,或者他们是否正在做我们/Auth0 也可以做的事情)。

重现步骤:

  1. 在 iOS 中打开 Facebook Messenger(这应该也适用于 Facebook,但这说明了问题)
  2. 向自己发送一条包含 URL 的消息https://community.auth0.com
  3. 单击 Auth0 社区论坛的链接
  4. 点击登录
  5. 点击使用 Google 登录
  6. 您会看到 403: disallowed_useragent 错误。

为了证明似乎确实有一种方法可以在野外完成此操作:

  1. 确保您的手机未安装 Pinterest(否则您的手机将在本机应用程序中打开它)。
  2. 在 iOS 中打开 Facebook Messenger
  3. 向自己发送一条包含 …

authentication google-authentication webview google-oauth

24
推荐指数
1
解决办法
1万
查看次数