* @author dswitkin@google.com (Daniel Switkin)
*/
public final class HelpActivity extends Activity {
+
private static final String TAG = HelpActivity.class.getSimpleName();
// Actually guessing at the Desire's MODEL for now:
public static final String REQUESTED_PAGE_KEY = "requested_page_key";
public static final String DEFAULT_PAGE = "index.html";
public static final String WHATS_NEW_PAGE = "whatsnew.html";
+
private static final String BASE_URL = "file:///android_asset/html/";
+ private static final String WEBVIEW_STATE_PRESENT = "webview_state_present";
private static boolean initialized = false;
private WebView webView;
webView = (WebView)findViewById(R.id.help_contents);
webView.setWebViewClient(new HelpClient());
+ // Froyo has a bug with calling onCreate() twice in a row, which causes the What's New page
+ // that's auto-loaded on first run to appear blank. As a workaround we only call restoreState()
+ // if a valid URL was loaded at the time the previous activity was torn down.
Intent intent = getIntent();
- if (icicle != null) {
+ if (icicle != null && icicle.getBoolean(WEBVIEW_STATE_PRESENT, false)) {
webView.restoreState(icicle);
} else if (intent != null) {
String page = intent.getStringExtra(REQUESTED_PAGE_KEY);
webView.loadUrl(BASE_URL + DEFAULT_PAGE);
}
- backButton = (Button)findViewById(R.id.back_button);
+ backButton = (Button) findViewById(R.id.back_button);
backButton.setOnClickListener(backListener);
- Button doneButton = (Button)findViewById(R.id.done_button);
+ View doneButton = findViewById(R.id.done_button);
doneButton.setOnClickListener(doneListener);
if (!initialized) {
@Override
protected void onSaveInstanceState(Bundle state) {
- webView.saveState(state);
+ String url = webView.getUrl();
+ if (url != null && url.length() > 0) {
+ webView.saveState(state);
+ state.putBoolean(WEBVIEW_STATE_PRESENT, true);
+ }
}
@Override
setTitle(view.getTitle());
backButton.setEnabled(view.canGoBack());
}
+
+ @Override
+ public boolean shouldOverrideUrlLoading(WebView view, String url) {
+ if (url.startsWith("file")) {
+ // Keep local assets in this WebView.
+ return false;
+ } else {
+ // Open external URLs in Browser.
+ startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
+ return true;
+ }
+ }
}
}