【问题标题】:How to make webview change url automatically?如何使 webview 自动更改 url?
【发布时间】:2013-09-02 07:50:05
【问题描述】:

问题是url 每天都在变化 来自

https://www.aquaserv.ro/index.php?npage=757

https://www.aquaserv.ro/index.php?npage=758

等等……

package com.example.comunicatavariicompaniaaquaserv;
import android.app.Activity;
import android.os.Bundle;
import android.view.Window;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;  

public class tutorialOne extends Activity
{
final Activity activity = this;

@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    this.getWindow().requestFeature(Window.FEATURE_PROGRESS);
    setContentView(R.layout.avarii);
    WebView webView = (WebView) findViewById(R.id.webview1);
    webView.getSettings().setJavaScriptEnabled(true);//enable java content
    webView.getSettings().setUseWideViewPort(false);//enable zoom-out page
    webView.getSettings().setDomStorageEnabled(true);


    webView.setWebChromeClient(new WebChromeClient() {
        public void onProgressChanged(WebView view, int progress)
        {
            activity.setTitle("Se incarca datele...");
            activity.setProgress(progress * 100);

            if(progress == 100)
                activity.setTitle(R.string.app_name);
        }

    });

    webView.setWebViewClient(new WebViewClient() {


        @Override
        public void onReceivedError(WebView view, int errorCode, String description,   
        String failingUrl)                                                          
        {
            // Handle the error
        }

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url)
        {
            view.loadUrl(url);
            return true;
        }
        });

    webView.loadUrl("https://www.aquaserv.ro/index.php?npage=757");
    } 
    }

【问题讨论】:

  • 有什么问题?只需在 webView.loadUrl() 中给出正确的 url
  • 我不想每天都这样做。它应该是自动化的。此外,如果我在 google play 上发布 apk,这意味着我每天都必须重新发布它,这太糟糕了..

标签: android url dynamic webview


【解决方案1】:

您的用例是什么?你如何得到这个网址?您必须对 URL 进行硬编码吗?是什么触发了变化?

我建议您动态获取 URL 并将其传递给 WebView。如果您知道 URL 何时会更改,或者您始终可以获取具有唯一标识的最新 URL,则可以在获取最新 URL 后将 URL 加载到 WebView 中。

【讨论】:

  • 网址每天更改一次,在网站上发布新消息后。我希望过程能够自动化,这样我就不必每天手动更改网址。
  • 如何动态获取 url 并将其传递给我的代码中的 webview?
  • @dodialfaed 显然,您需要了解网站上发布了多少新消息,然后您可以自动化该过程。是否有任何网络服务可以这样做?或者你可以创建你自己的。本质上,您可以让 cron 作业运行监视网站上的新消息,并将该信息存储在数据库中。当您的应用程序启动时,您可以提取该信息并计算正确的 URL。它可以是自动化的,但你需要应用程序如何。
  • @dodialfaed 如果 URL 每天只更改一次(比如第 0 天是 ....757,第 10 天是 ....767),您可以将 URL 保存在 SharedPreferences 中初始时间。然后当应用程序打开时,您会看到自保存 URL 以来已经过去了多少天,因此您可以更改它。
【解决方案2】:
WebView 上的

loadUrl(String url) 和 load*(..) 是可以让您动态设置 url 的函数。下面的 Activity 做到了。它有两个按钮,“click to go to google”和“click to go to yahoo”,点击后调用loadUrl()方法更新WebView。

因此,对于 url 的任何更改,使用参数调用 loadUrl() 函数就完成了。

import android.app.Activity;
import android.app.ActionBar;
import android.app.Fragment;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.os.Build;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        /*if (savedInstanceState == null) {
            getFragmentManager().beginTransaction()
                    .add(R.id.container, new PlaceholderFragment()).commit();
        }*/
        final WebView webView=(WebView)findViewById(R.id.webview);


        webView.setWebViewClient(new WebViewClient());
        WebSettings webSettings = webView.getSettings();
        webSettings.setJavaScriptEnabled(true);
        Button b= (Button)  findViewById(R.id.google);
        b.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                webView.loadUrl("http://www.google.com");

            }
        });
        Button b2= (Button) findViewById(R.id.yahoo);
        b2.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                webView.loadUrl("http://www.yahoo.com");

            }
        });

    }

}

【讨论】:

    【解决方案3】:

    使用此代码

     @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url.replace("https://www.aquaserv.ro/index.php?npage=757", "https://www.aquaserv.ro/index.php?npage=758"));
                return false;
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-30
      • 2012-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多