如何保存URL以便稍后查看

时间:2011-11-03 18:08:17

标签: java android webview

我有一个使用WebView的应用程序。 但我想保存网址,例如:当应用程序启动时,它会打开google.com。因此,如果我想输入内容并保存该搜索或网站,我希望它有一个按钮:“保存网站”和“加载网站”。我该如何做到尽可能简单? 到目前为止我正在使用此代码:

package com.mysoftwaremobileapps.Finnnofortablets;

import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;

public class finnnoActivity extends Activity implements OnClickListener {
    /** Called when the activity is first created. */
    Button TilbakeButton;
    WebView FinnWeb;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    FinnWeb = (WebView)findViewById(R.id.FinnWeb);
    FinnWeb.setWebViewClient(new MyWebViewClient());
    FinnWeb.getSettings().setBuiltInZoomControls(true); 
    FinnWeb.getSettings().setJavaScriptEnabled(true);
    FinnWeb.loadUrl("http://m.finn.no");
    FinnWeb.requestFocus(View.FOCUS_DOWN);
    }
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if ((keyCode == KeyEvent.KEYCODE_BACK)) {
        setContentView(R.layout.main);
        FinnWeb  = (WebView) findViewById(R.id.FinnWeb);
        FinnWeb.setWebViewClient(new MyWebViewClient());
        FinnWeb.getSettings().setJavaScriptEnabled(true);
        FinnWeb.getSettings().setBuiltInZoomControls(true); 
        FinnWeb.requestFocus(View.FOCUS_DOWN);
        FinnWeb.goBack();
        return true;
}
    return super.onKeyDown(keyCode, event);
}
@Override
public boolean onCreateOptionsMenu(Menu meny) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menubuttons, meny);
    return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch(item.getItemId()) {
    case R.id.LoggInn:
        setContentView(R.layout.main);
        FinnWeb  = (WebView) findViewById(R.id.FinnWeb);
        FinnWeb.setWebViewClient(new MyWebViewClient());
        FinnWeb.getSettings().setJavaScriptEnabled(true);
        FinnWeb.loadUrl("http://m.finn.no/#loginForm.html");
        FinnWeb.requestFocus(View.FOCUS_DOWN);
        break;
    case R.id.OmUtvikler:
        setContentView(R.layout.omutvikler);
        TilbakeButton = (Button)findViewById(R.id.TilbakeButton);
        TilbakeButton.setOnClickListener(this);
        break;
    case R.id.RegistrerDeg:
        setContentView(R.layout.main);
        FinnWeb  = (WebView) findViewById(R.id.FinnWeb);
        FinnWeb.setWebViewClient(new MyWebViewClient());
        FinnWeb.getSettings().setJavaScriptEnabled(true);
        FinnWeb.loadUrl("http://m.finn.no/#auth/registrer.html");
        FinnWeb.requestFocus(View.FOCUS_DOWN);
        break;
    case R.id.Tilbake:
        if (FinnWeb.canGoBack()) {
            FinnWeb.goBack();
        }
        else{

        }
        break;
    case R.id.Frem:
        if (FinnWeb.canGoForward()) {
            FinnWeb.goForward();
        }
        else{

        }
        break;
    case R.id.ExitWithSaving:
        System.exit(0);
        break;
    case R.id.Exit:
        System.exit(0);
        break;
    case R.id.LastAnnonse:
        break;
        }
    return true;
}
public void onClick(View src) {
    switch(src.getId()) {
    case R.id.TilbakeButton:
        setContentView(R.layout.main);
        FinnWeb  = (WebView) findViewById(R.id.FinnWeb);
        FinnWeb.setWebViewClient(new MyWebViewClient());
        FinnWeb.getSettings().setJavaScriptEnabled(true);
        FinnWeb.getSettings().setBuiltInZoomControls(true); 
        FinnWeb.requestFocus(View.FOCUS_DOWN);
        break;
    }
}
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
    }

    private class MyWebViewClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
}
    }
    }

1 个答案:

答案 0 :(得分:1)

有几种不同的方法可以做到这一点。第一种是通过已经覆盖的“shouldOverrideUrlLoading”中的钩子来记住URL。

像:

@Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) 
    {   view.loadUrl(url);
        //save off url in instance variable
        this.currentURL = url.toString();
        return true;
     }

其次是当用户通过以下方法点击您提到的“保存网站”按钮时,呼叫您的webView获取当前网址:

http://developer.android.com/reference/android/webkit/WebView.html#getUrl()

这些方法中的任何一种都允许您访问当前显示的URL。我希望这会有所帮助。