"Return" fecha WebView app

Tenho essa aplicação que roda em FullScreen.NoTitleBar:

public class BrowserActivity extends Activity {
private String lastUrl = "http://www.google.com";

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);

    WebView web = (WebView) findViewById(R.id.webview);

    WebSettings settings = web.getSettings();
    settings.setJavaScriptEnabled(true);
    settings.setJavaScriptCanOpenWindowsAutomatically(false);
    settings.setSupportMultipleWindows(false);
    settings.setSupportZoom(false);
    settings.setPluginsEnabled(true);

    web.setWebViewClient(new WebViewClient() {
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            lastUrl = url;
            view.loadUrl(url);
            return true;
        }
    });
    web.setVerticalScrollBarEnabled(false);
    web.setHorizontalScrollBarEnabled(false);

    web.loadUrl(lastUrl);
}
}

Esse “lastUrl” é usado para retornar o usuario a pagina que estava navegando enquanto muda a orientação do device. (Esse não é o problema, é só o motivo pelo qual preciso ter o WebViewClient)

Meu problema é:
Se o usuario seguir algum link e apertar o botao de return (fisico) a aplicação se fecha invés de voltar uma pagina.

Alguém sabe como eu lido com isso?

Colocar um listener para o botão, capturá-lo, tratá-lo e evitar que seja propagado não rola?

A APK é apenas uma WebView, eu não posso colocar algum botao para isso.

Eu acabei solucionando com uma Stack das URLs que foram chamadas e intercepto o ‘return’ para carregar o ‘pop()’ da Stack.

[quote=Marky.Vasconcelos]A APK é apenas uma WebView, eu não posso colocar algum botao para isso.
Eu acabei solucionando com uma Stack das URLs que foram chamadas e intercepto o ‘return’ para carregar o ‘pop()’ da Stack.[/quote]

Mas eu não disse “colocar um listener para um botão”, mas “colocar um listener para o botão”!

Foi exatamente o que você fez! :wink: