Мне нужна помощь с отладкой моего приложения. Прежде всего: в эмуляторе и на некоторых других устройствах мое приложение работает нормально. На моем устройстве я получил принудительное закрытие (без сообщения принудительного закрытия).
"Сбой" происходит, если активность приложения изменяется.
Вот некоторый код класса MainActivity
. Он просто читает контент HTML с веб-страницы через веб-просмотр. И нет, это невозможно сделать через HttpRequest
потому что я не смог смоделировать почтовый запрос.
public class MainActivity extends Activity {
public final static String EXTRA_HTML = "com.example.com.test.HTML";
private WebView mWebView;
private ProgressDialog mDialog;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mWebView = (WebView) findViewById(R.id.webView1);
CookieSyncManager.createInstance(this);
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.removeAllCookie();
mWebView.setBackgroundColor(0);
mWebView.setWebChromeClient(new WebChromeClient() {
public boolean onConsoleMessage(ConsoleMessage cmsg) {
if (cmsg.message().startsWith("MAGIC")) {
mDialog.cancel();
/*HashMap<String, String> message = new HashMap<String, String>();*/
String msg = cmsg.message().substring(5);
Intent intent = new Intent(MainActivity.this,
ReadDataActivity.class);
/*message.put("message", msg);*/
/*intent.putExtra(EXTRA_HTML, message);*/
intent.putExtra(EXTRA_HTML, msg);
startActivity(intent);
}
return false;
}
});
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setPluginState(PluginState.OFF);
mWebView.getSettings().setLoadsImagesAutomatically(false);
mWebView.getSettings().setBlockNetworkImage(true);
mWebView.getSettings().setAppCacheEnabled(true);
mWebView.getSettings().setSavePassword(true);
mWebView.getSettings()
.setCacheMode(WebSettings.LOAD_NORMAL);
mWebView.setWebViewClient(new WebViewClient() {
public void onPageFinished(WebView view, String address) {
if (address.indexOf("mySession") != -1) {
view.loadUrl("javascript:console.log('MAGIC'+document.getElementsByTagName('html')[0].innerHTML);");
}
});
mWebView.loadUrl("http://www.myurl.de");
}
Итак, в onConsoleMessage()
я просто onConsoleMessage()
HTML-код другому классу Activity, который читает, анализирует и отображает содержимое.
Проблема заключается в том, что в этот момент, когда класс ReadDataActivity
должен быть загружен, приложение просто закроется и вернется на домашний экран без каких-либо сообщений или пользовательских диалогов.
Возможно ли, что HTML-код, который передается в виде строки в ReadDataActivity
велик? Я также пытаюсь добавить HTML-код в виде строки в HashMap, но проблема та же.
Некоторые идеи, что я могу сделать, чтобы решить проблему? Может быть, я должен попытаться создать объект Parcelable
?
В эмуляторе все работает нормально.