Как сохранить URL для просмотра позже - PullRequest
0 голосов
/ 03 ноября 2011

У меня есть приложение с WebView. Но я хочу, чтобы он сохранял URL-адреса, например: при запуске приложения открывается 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 Ответ

1 голос
/ 03 ноября 2011

Есть несколько способов сделать это. Первый заключается в том, чтобы запомнить URL через хук в уже переопределенном «shouldOverrideUrlLoading».

Как:

@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 отображается в данный момент. Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...