我需要帮助调试我的应用程序。首先:在模拟器和一些其他设备上,我的应用程序运行良好。但在我的设备上,却出现了一个强制关闭(没有强制关闭消息)。
如果应用程序的活动被更改,就会发生这种“崩溃”。
下面是MainActivity
类的一些代码。它只是通过Webview从网页读取HTML内容。不过,不可能使用HttpRequest
来实现这一点,因为我无法模拟POST请求。
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()
方法中,我只是将 HTML 代码传递给另一个 Activity 类,该类读取、解析并显示内容。
问题在于此时应该加载 ReadDataActivity
类的时候,应用程序会直接关闭并返回到主屏幕,而没有任何消息或用户对话框。
可能传递给 ReadDataActivity
的 HTML 代码太大了吗?我还尝试将 HTML 代码作为字符串添加到 HashMap 中,但问题仍然存在。
有什么想法可以调试这个问题吗?也许我应该尝试创建一个 Parcelable
对象?
在模拟器中一切都正常工作。