我有 2 种不同的设备来测试我的应用程序。其中一个有Android 4.0.3,另一个有4.3。
通常,我不在乎我使用的是哪一个,但由于我需要将文件上传到保管箱并将它们下载到其他设备中,所以我开始使用两者。问题是,使用 Jelly Bean 的代码可以完美运行,并且文件已上传。与 IceCream 的情况不同:fileObserver 抛出一个理论上未处理的异常,我说理论上是因为它崩溃的语句位于 try-catch 块内。
好吧,应用程序在此 Icecream 设备中崩溃的代码如下:
try {
/* Some statements and stuff to do
...................
.....................
.........................
*/
File file = new File(mEncryptedDirectoryPath + "/" + fileName);
if (CheckConnection.isConnected(getApplicationContext())) {
UploadFileToDropbox upload = new UploadFileToDropbox(MainActivity.mDBApi,
file, Constants.DROPBOX_DIR + "/" + fileName);
upload.execute();
}
else {
// other stuff
}
}
catch (Exception e){
StringWriter errors = new StringWriter();
e.printStackTrace(new PrintWriter(errors));
Log.i("Exception", errors.toString());
}
它在通话时崩溃:
UploadFileToDropbox upload = new UploadFileToDropbox(MainActivity.mDBApi,
file, Constants.DROPBOX_DIR + "/" + fileName);
调试时,它甚至没有进入 UploadFileToDropbox 的构造函数。顺便说一下,这是在 AsynTask 中实现的类,并且 fileObserver 存在于在主线程中运行的 Service 中。
知道问题是什么吗?
提前致谢
更新
堆栈跟踪:
11-01 21:23:40.310: I/Exception(32199): java.lang.ExceptionInInitializerError
11-01 21:23:40.310: I/Exception(32199): at com.example.example.SecureSharing$1.onEvent(SecureSharing.java:136)
11-01 21:23:40.310: I/Exception(32199): at android.os.FileObserver$ObserverThread.onEvent(FileObserver.java:125)
11-01 21:23:40.310: I/Exception(32199): at android.os.FileObserver$ObserverThread.observe(Native Method)
11-01 21:23:40.310: I/Exception(32199): at android.os.FileObserver$ObserverThread.run(FileObserver.java:88)
11-01 21:23:40.310: I/Exception(32199): Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
11-01 21:23:40.310: I/Exception(32199): at android.os.Handler.<init>(Handler.java:121)
11-01 21:23:40.310: I/Exception(32199): at android.os.AsyncTask$InternalHandler.<init>(AsyncTask.java:607)
11-01 21:23:40.310: I/Exception(32199): at android.os.AsyncTask$InternalHandler.<init>(AsyncTask.java:607)
11-01 21:23:40.310: I/Exception(32199): at android.os.AsyncTask.<clinit>(AsyncTask.java:190)
11-01 21:23:40.310: I/Exception(32199): ... 4 more