2011-11-03 3 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을 기억하는 것입니다.

처럼 :) (

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

을 :

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

는 두 번째로 사용자가 방법을 통해 언급 한 "저장 사이트"버튼을 클릭하면 현재의 URL을 얻을 수 있도록 웹보기를 호출하는 것입니다

이 두 방법 중 하나를 사용하면 현재 표시되는 URL에 액세스 할 수 있습니다. 이게 도움이 되길 바란다.

+0

감사합니다. 아주 좋은 예입니다. 그러나 나는 이것을 조금 어렵게 생각하고 있습니다. 좀 더 쉽게 설명해 주시겠습니까? 정말 고마워! – user1020972

관련 문제