2011-11-03 52 views
0

我有一個帶有WebView的應用程序。 但我想讓它保存URL,例如:當應用程序啓動時,它會打開google.com。因此,如果我想輸入內容並保存該搜索或網站,我希望它有一個按鈕:「保存網站」和「加載網站」。我如何儘可能簡單地做到這一點? 我使用此代碼至今:如何保存URL以便日後查看

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

有幾種不同的方法來做到這一點。首先是通過已覆蓋的「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; 
    } 

其次是調出的網頁視圖來得到當前的URL,當用戶通過該方法點擊您提到的「保存站點」按鈕:

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

這些方法都可以讓你訪問當前正在顯示的URL。我希望這有幫助。

+0

謝謝,非常好的例子。但是我發現這有點難,請你試着解釋一下它有點簡單嗎?非常感謝! – user1020972

相關問題