相关疑难解决方法(0)

如何在android中加载url到webview时显示进度?

我正在加载网址到webview:

WebView webview=(WebView)findViewById(R.id.webview); 
webview.loadUrl(url);
Run Code Online (Sandbox Code Playgroud)

加载网址需要一些时间,在此期间显示空白屏幕.我想在加载网址时显示进度对话框:

ProgressDialog dialog = ProgressDialog.show(this, "HI","Loading......", true);
Run Code Online (Sandbox Code Playgroud)

但是,上面的代码是行不通的.如果有任何想法,请帮助.提前致谢.

android webview

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

我怎么知道我的WebView 100%加载?

我正在尝试在我的WebView中加载一些包含JavaScript的HTML代码.

现在,我想测试我的WebView是否在5秒之前加载.我已经尝试过这种方法getProgress(),但有时我得到的结果是100,但我的Webview没有加载.
有没有其他方法可以确保我的Webview 100%加载?

这是我的代码的一部分:

sdk.getWebView().loadDataWithBaseURL("notreal/", data_html,MIME_TYPE,ENCODING_UTF_8,null);

Timer timer = new Timer();
TimerTask task = new TimerTask() {

    @Override
    public void run(){                      
    Log.i("TAG", "progress fin = "+sdk.getWebView().getProgress());

    if(sdk.getWebView().getProgress() <100){
        //cancel the webView
        sdk.getContext().runOnUiThread(new Runnable() {
             @Override
             public void run() {
            sdk.getImgView().setVisibility(View.VISIBLE);
            sdk.getWebView().setVisibility(View.GONE);
             }
        });
    }

    // else ,the Webview is loaded
    else{
        //prepare webview 
        sdk.getContext().runOnUiThread(new Runnable() {
            @Override
            public void run(){
                     // hide imageView
                     sdk.getImgView().setVisibility(View.GONE);
                     sdk.getWebView().setVisibility(View.VISIBLE);
            }
        });
    }

 }
 };
 timer.schedule(task, 5000);
Run Code Online (Sandbox Code Playgroud)

android android-webview

54
推荐指数
5
解决办法
7万
查看次数

如何确定何时Android WebView完全加载?

我想知道如何确定何时完成 WebView 加载.

让我完全定义.

  • 所有重定向都已发生
  • 页面明显显示,尚未加载任何内容

这个问题的答案很糟糕:

WebViewClient.onPageFinished() - 如果有重定向加载页面,则会多次触发.它也会在页面显示之前触发.

PictureListener.onNewPicture() - 每次屏幕更改时都会触发,每次重定向都会触发AFAICT.我怎么知道哪个射击是最后一个?

WebChromeClient.onProgressChanged() - 与onPageFinished相同的问题.(在David建议以下解决方案后添加)

Thread.sleep(5000) - 应该很明显,为什么这是不可接受的.

当然,上述工作的巧妙组合将是完美的.

为什么我想知道你问这个?因为我想注入一些JavaScript 一次一次Webview是完全完成加载.

javascript android webview

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

forOverrideUrlLoading在WebView for Android中未运行

-Edit:找到解决方案
- 在经过一番繁重的搜索后想出来 - 一个人(我的意思是一个人)说他们改为使用onPageLoad(); 这完全符合我的目的.区别在于onPageLoad()的运行时间晚于shouldOverrideUrlLoading,但它对我的代码没有影响.

我正在尝试使用OAuth为Android应用程序设置Twitter授权,到目前为止我可以成功将用户发送到授权URL,但是,我现在要做的是拦截重定向到回调(这只是导致404错误,我们的回调URL不会在我们的服务器上有关联的页面).我要做的是检查URL是否是我们的回调,然后从URL中提取OAuth Verifier.我使用以下代码设置我的WebView:

view = (WebView)findViewById(R.id.twitterWbVw);
view.setWebViewClient(new WebViewClient(){
    @Override
    public boolean shouldOverrideUrlLoading(WebView wView, String url)
    {
        String urlHolder;
        String[] verifExtrctr;
        urlHolder = url.substring(0, url.indexOf('?'));
        System.out.println("url");
        if(urlHolder.equalsIgnoreCase(CALLBACK_URL))
        {
            verifExtrctr = urlHolder.split("?");
            verifExtrctr = verifExtrctr[2].split("=");
            if(verifExtrctr[0].equalsIgnoreCase("oauth_verifier"))
            {
                params[5] = verifExtrctr[1];
                return true;
            }
            else
            {
                System.out.println("Inocorrect callback URL format.");
            }
        }
        else    
        {
            wView.loadUrl(url);
        }
        return true;
    }
});
view.loadUrl(urlAuthorize.toExternalForm());
Run Code Online (Sandbox Code Playgroud)

事情甚至是System.out.println("url"); (我用来调试)不运行!所以我的想法非常枯燥,找不到有类似问题的人.授权URL运行良好,我可以成功授权应用程序,但由于某种原因重定向到回调URL永远不会被截获.任何帮助将不胜感激,这是在我的onResume(),如果这很重要.

https android android-webview webviewclient

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

Android WebView TimeOut

有没有办法在WebView中设置超时值?如果网址响应太慢,我希望WebView有时间.

android android-webview

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

如何管理Android Webview的Blank White Loading屏幕?

这是一个直观的问题而不是直接问题,但是当我的应用程序中加载WebView时,屏幕为空白白色,持续2-4秒,直到内容完全加载.时间取决于正在加载的内容的大小.

有没有办法管理这个,所以屏幕只会在加载时刷新内容?像"加载......"动画或类似的东西?我只是不希望向我的用户呈现纯白屏幕.

我有一个启动画面,然后加载WebView.在初始空白暂停(加载时)之后,WebView工作正常,但我想将其保存在特定屏幕上,直到页面加载或具有带进度加载程序的黑屏.

是否有可能检测到负载完成的东西?如果是这种情况,我可以将其用作触发器.

有谁知道管理这个空白屏幕的方法?

谢谢!

/ R

android screen loading webview

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

如何从UI线程WebView.getTitle()?

在一个子类中WebView,我曾经在一个重写方法中使用此行getTitle():

String title = super.getTitle();
Run Code Online (Sandbox Code Playgroud)

它在Android的所有版本中运行良好,直到我在Android 4.1手机上测试我的应用程序,这给了我这条警告super.getTitle():

12-20 21:38:27.467:W/webview_proxy(2537):java.lang.Throwable中:警告:网页视图方法被称为上螺纹'WebViewCoreThread'. 必须在UI线程上调用所有WebView方法.WebView的未来版本可能不支持在其他线程上使用.

所以,我正在考虑通过runOnUiThread()以下方式解决这个新法令:

Activity a = this.getActivity();
a.runOnUiThread(new Runnable() {
    public void run() { 
    String title = super.getTitle();
    }
});
Run Code Online (Sandbox Code Playgroud)

但是这段代码甚至不会编译因为super不再引用WebView,而是指代Activity.

任何想法如何super.getTitle()从UI线程?(使用上面描述的约束,在getTitle()子类中WebView)

android android-webview

12
推荐指数
2
解决办法
5575
查看次数

使用Xcode中的Swift确定webView中的完成加载网站

我正在尝试使用swift在xcode中创建一个webapp,这是我当前的代码:

IBOutlet var webView: UIWebView!

    var theBool: Bool = false
    var myTimer = NSTimer()
    @IBOutlet var progressBar: UIProgressView!

override func viewDidLoad() {
   super.viewDidLoad()
   let url = NSURL(string: "http://stackoverflow.com")
   let request = NSURLRequest(URL: url)
   webView.loadRequest(request)
}
Run Code Online (Sandbox Code Playgroud)

我有一个问题,我如何在webView中确定页面的完成加载?

您是否知道包含WebView所有定义的文档?我的意思是..(开始/结束加载,当前网址,标题页等)?

(对不起我的英语不好).

xcode loading webview ios swift

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

获取最后加载的webview网址,而无需在Android中执行webView.goBack()

我想记录历史记录网址或上次加载的网址,而无需手动存储历史记录网址.那可能吗?

android webkit browser-history android-webview

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

onPageFinished在加载页面之前触发

我只是想知道何时加载html页面.在加载整个页面之前调用OnPageFinished.当我通过WebView创建的位图设置图像视图时,我得到了空白视图

       mWebView.getSettings().setJavaScriptEnabled(true);
        mWebView.setAlwaysDrawnWithCacheEnabled(true);


  mWebView.setWebViewClient(new WebViewClient(){


            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon){

                super.onPageStarted(view, url, favicon);

            }



            @Override
            public void onPageFinished(WebView view,String url){

                    Bitmap b = Bitmap.createBitmap( 480, 240, Bitmap.Config.ARGB_8888);     
                    Canvas c = new Canvas(b);
                    view.layout(view.getLeft(), view.getTop(), view.getRight(), view.getBottom());
                    view.draw(c);
                    mImageView.setImageBitmap(b);


                 //b.recycle();
            }



        }); 
Run Code Online (Sandbox Code Playgroud)

编辑:

我现在只尝试使用Toast消息来实现JavaScriptInterface,但它仍然不起作用.我已经粘贴了HTML代码和Java:

编辑:

我终于搞定了.我正确地使用了JavaScriptInterface.当loadUrl启动时,正在加载html文件.当整个页面在屏幕上可用时,来自html文件的onload函数从JavaScriptInterface类调用captureImage函数.现在我确定页面已满载,我可以抓住它的图片.谢谢你的帮助.

码:

JAVA:

    mWebView.getSettings().setJavaScriptEnabled(true);
    mWebView.setDrawingCacheEnabled(true);
    mWebView.addJavascriptInterface(new JavaScriptInterface(this), "Android");
    mWebView.setWebViewClient(new WebViewClient(){});   
    mButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {


            mWebView.loadUrl("file:///android_asset/html_sample.html");
            //mWebView.loadUrl("https://www.onet.pl");

        }
    });

 public class JavaScriptInterface {
    private Context mContext;;

    public JavaScriptInterface(Context …
Run Code Online (Sandbox Code Playgroud)

android android-webview

9
推荐指数
2
解决办法
4936
查看次数

对话框中的WebView(加载资产)并没有布局

我在Android 2.2上,我正在创建一个WebView内部对话框:

@Override
protected Dialog onCreateDialog(int id) {
    Dialog dialog = new Dialog(this);
    //.....
    dialog.setContentView(R.layout.dialoghelp);
    WebView v = (WebView)dialog.findViewById(R.id.helpWebView);
    v.loadUrl("file:///android_asset/help.html");
    //......
    return dialog;
}
Run Code Online (Sandbox Code Playgroud)

它正在工作,但是第一次打开对话框WebView时,即使内容实际已加载,也没有布局.

我知道这一点,因为使用HierarchyViewer我可以看到内容并强制布局请求,我也可以在模拟器中看到它们.此外,如果我只是取消对话框并重新打开它,一切正常.

谁错了,Android还是我?我尝试加载,onPrepareDialog()但它是一样的.

编辑

我改变WebView的布局PARAMS来自fill_parentwrap_content这种方式,它的工作原理.我可以看到它打开0高度,然后加载后它长大.宽度甚至在以前工作.

android dialog webview

7
推荐指数
1
解决办法
1265
查看次数

如何检测Android WebView何时加载页面?

我有一个应用程序,它显示启动页面并在 WebView 中加载 URL 时删除该启动页面。以下是我们用来移除启动页面的相关代码:

browser.setWebViewClient(new BrowserClient() {
 @Override
 public void onPageFinished(WebView view, String url) {
  super.onPageFinished(view, url);
  // Work around for WebView onPageFinished called twice                
  if (flag == true) {
   browser.setVisibility(View.VISIBLE);
   splashImage.setVisibility(View.INVISIBLE);
   pageLoader.setVisibility(View.INVISIBLE);
  } else {
   flag = true;
  }
 }
});
Run Code Online (Sandbox Code Playgroud)

这段代码有效......除了它很慢。在网页加载很久之后,启动页面需要很长时间才能删除。

是否有任何关于如何可靠地检测 WebView 何时加载页面的提示?过去几天我一直在研究这个,我似乎无法想出任何可靠的东西。

我看到的最有希望的是以下内容,但将此代码放在 Android 控制台中会引发错误:

@Override
public void invalidate() {
 super.invalidate();

 if (getContentHeight() > 0) {
  // WebView has displayed some content and is scrollable.
 }
}
Run Code Online (Sandbox Code Playgroud)

谢谢!

编辑:有很多答案提出 onPageFinished,甚至有人将其标记为重复,并带有指向使用 onPageFinished 的解决方案的链接。伙计们,我们已经在使用 onPageFinished …

android webview

2
推荐指数
1
解决办法
5716
查看次数