private static final String TAG = HelpActivity.class.getSimpleName();
// Actually guessing at the Desire's MODEL for now:
- private static final String[] BUGGY_MODEL_SUBSTRINGS = {"Desire", "Pulse", "Geeksphone"};
+ private static final String[] BUGGY_MODEL_SUBSTRINGS = {
+ "Desire",
+ "Pulse", // Camera doesn't come on
+ "Geeksphone", // Doesn't support YUV?
+ "supersonic", // aka Evo
+ };
private static final Uri BUGGY_URI =
Uri.parse("http://code.google.com/p/zxing/wiki/FrequentlyAskedQuestions");
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);
@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;
+ }
+ }
}
}