getNextEntry()在3.0(API11)以下的Android版本上抛出IOException

getNextEntry()在3.0(API11)以下的Android版本上抛出IOException,android,fileinputstream,Android,Fileinputstream,以下代码在API级别11及更高级别上似乎运行良好: private ZipInputStream getFileFromZip(InputStream zipFileStream) throws FileNotFoundException, IOException { ZipInputStream zis = new ZipInputStream(zipFileStream); ZipEntry ze = null; while ((ze = zis.getN

以下代码在API级别11及更高级别上似乎运行良好:

   private ZipInputStream getFileFromZip(InputStream zipFileStream) throws FileNotFoundException, IOException {
     ZipInputStream zis = new ZipInputStream(zipFileStream);
     ZipEntry ze = null;
     while ((ze = zis.getNextEntry()) != null) {
       Log.w(ACTIVITY_LOG_TAG, "extracting file: '" + ze.getName() + "'...");
       return zis;
     }
     return null;
    }
但在以下情况下运行时会引发
IOException
,例如10或8。我想在我的应用程序中也支持这些API,所以我需要让它发挥作用

我检查了所有的文件名、路径等,再次在3.0下运行。 我也在使用actionbarsherlock,尽管这不会影响zip输入流

有人有什么想法吗

使现代化 我忘了提到我正在使用
AsyncTask
进行此操作

Blackbelt要求的LogCat:

06-08 11:12:17.478: E/AndroidRuntime(405): FATAL EXCEPTION: AsyncTask #1
06-08 11:12:17.478: E/AndroidRuntime(405): java.lang.RuntimeException: An error occured while executing doInBackground()
06-08 11:12:17.478: E/AndroidRuntime(405):  at android.os.AsyncTask$3.done(AsyncTask.java:200)
06-08 11:12:17.478: E/AndroidRuntime(405):  at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
06-08 11:12:17.478: E/AndroidRuntime(405):  at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
06-08 11:12:17.478: E/AndroidRuntime(405):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
06-08 11:12:17.478: E/AndroidRuntime(405):  at java.util.concurrent.FutureTask.run(FutureTask.java:137)
06-08 11:12:17.478: E/AndroidRuntime(405):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
06-08 11:12:17.478: E/AndroidRuntime(405):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
06-08 11:12:17.478: E/AndroidRuntime(405):  at java.lang.Thread.run(Thread.java:1096)
06-08 11:12:17.478: E/AndroidRuntime(405): Caused by: android.database.sqlite.SQLiteException: Unable to extract databases/RGBColortype.zip to data directory
06-08 11:12:17.478: E/AndroidRuntime(405):  at android.content.res.AssetManager.readAsset(Native Method)
06-08 11:12:17.478: E/AndroidRuntime(405):  at android.content.res.AssetManager.access$700(AssetManager.java:36)
06-08 11:12:17.478: E/AndroidRuntime(405):  at android.content.res.AssetManager$AssetInputStream.read(AssetManager.java:574)
06-08 11:12:17.478: E/AndroidRuntime(405):  at java.io.PushbackInputStream.read(PushbackInputStream.java:198)
06-08 11:12:17.478: E/AndroidRuntime(405):  at java.util.zip.ZipInputStream.getNextEntry(ZipInputStream.java:212)
06-08 11:12:17.478: E/AndroidRuntime(405):  at com.coloruapp.MainActivity.getFileFromZip(MainActivity.java:346)
06-08 11:12:17.478: E/AndroidRuntime(405):  at com.coloruapp.MainActivity.copyDatabaseFromAssets(MainActivity.java:321)
06-08 11:12:17.478: E/AndroidRuntime(405):  at com.coloruapp.MainActivity.access$2(MainActivity.java:315)
06-08 11:12:17.478: E/AndroidRuntime(405):  at com.coloruapp.MainActivity$DBInstaller.doInBackground(MainActivity.java:294)
06-08 11:12:17.478: E/AndroidRuntime(405):  at com.coloruapp.MainActivity$DBInstaller.doInBackground(MainActivity.java:1)
06-08 11:12:17.478: E/AndroidRuntime(405):  at android.os.AsyncTask$2.call(AsyncTask.java:185)
06-08 11:12:17.478: E/AndroidRuntime(405):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
06-08 11:12:17.478: E/AndroidRuntime(405):  ... 4 more
之后,我显然泄露了
ProgressDialog

06-08 11:12:19.058: D/ActionBarSherlock(405): [dispatchStop]
06-08 11:12:19.138: E/WindowManager(405): Activity com.coloruapp.MainActivity has       leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@46090078 that was originally added here
06-08 11:12:19.138: E/WindowManager(405): android.view.WindowLeaked: Activity com.coloruapp.MainActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@46090078 that was originally added here
06-08 11:12:19.138: E/WindowManager(405):   at android.view.ViewRoot.<init>   (ViewRoot.java:247)
06-08 11:12:19.138: E/WindowManager(405):   at  android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148)
06-08 11:12:19.138: E/WindowManager(405):   at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
06-08 11:12:19.138: E/WindowManager(405):   at android.view.Window$LocalWindowManager.addView(Window.java:424)
06-08 11:12:19.138: E/WindowManager(405):   at android.app.Dialog.show(Dialog.java:241)
06-08 11:12:19.138: E/WindowManager(405):   at     com.coloruapp.MainActivity$DBInstaller.onPreExecute(MainActivity.java:310)
06-08 11:12:19.138: E/WindowManager(405):   at android.os.AsyncTask.execute(AsyncTask.java:391)
06-08 11:12:19.138: E/WindowManager(405):   at com.coloruapp.MainActivity.onCreate(MainActivity.java:92)
06-08 11:12:19.138: E/WindowManager(405):   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
06-08 11:12:19.138: E/WindowManager(405):   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
06-08 11:12:19.138: E/WindowManager(405):   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
06-08 11:12:19.138: E/WindowManager(405):   at android.app.ActivityThread.access$2300(ActivityThread.java:125)
06-08 11:12:19.138: E/WindowManager(405):   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
06-08 11:12:19.138: E/WindowManager(405):   at android.os.Handler.dispatchMessage(Handler.java:99)
06-08 11:12:19.138: E/WindowManager(405):   at android.os.Looper.loop(Looper.java:123)
06-08 11:12:19.138: E/WindowManager(405):   at android.app.ActivityThread.main(ActivityThread.java:4627)
06-08 11:12:19.138: E/WindowManager(405):   at java.lang.reflect.Method.invokeNative(Native Method)
06-08 11:12:19.138: E/WindowManager(405):   at java.lang.reflect.Method.invoke(Method.java:521)
06-08 11:12:19.138: E/WindowManager(405):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
06-08 11:12:19.138: E/WindowManager(405):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
06-08 11:12:19.138: E/WindowManager(405):   at dalvik.system.NativeStart.main(Native Method)
06-08 11:12:19.058:D/ActionBarSherlock(405):[dispatchStop]
06-08 11:12:19.138:E/WindowManager(405):活动com.coloruapp.main活动已泄漏window com.android.internal.policy.impl.PhoneWindow$DecorView@46090078原来是加在这里的
06-08 11:12:19.138:E/WindowManager(405):android.view.WindowLeaked:Activity com.coloruapp.main活动已泄漏window com.android.internal.policy.impl.PhoneWindow$DecorView@46090078原来是加在这里的
06-08 11:12:19.138:E/WindowManager(405):在android.view.ViewRoot上。(ViewRoot.java:247)
06-08 11:12:19.138:E/WindowManager(405):在android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148)
06-08 11:12:19.138:E/WindowManager(405):在android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
06-08 11:12:19.138:E/WindowManager(405):在android.view.Window$LocalWindowManager.addView(Window.java:424)
06-08 11:12:19.138:E/WindowManager(405):在android.app.Dialog.show(Dialog.java:241)
06-08 11:12:19.138:E/WindowManager(405):位于com.coloruapp.MainActivity$DBInstaller.onPreExecute(MainActivity.java:310)
06-08 11:12:19.138:E/WindowManager(405):在android.os.AsyncTask.execute(AsyncTask.java:391)
06-08 11:12:19.138:E/WindowManager(405):位于com.coloruapp.MainActivity.onCreate(MainActivity.java:92)
06-08 11:12:19.138:E/WindowManager(405):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
06-08 11:12:19.138:E/WindowManager(405):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
06-08 11:12:19.138:E/WindowManager(405):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
06-08 11:12:19.138:E/WindowManager(405):在android.app.ActivityThread.access$2300(ActivityThread.java:125)
06-08 11:12:19.138:E/WindowManager(405):在android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
06-08 11:12:19.138:E/WindowManager(405):在android.os.Handler.dispatchMessage(Handler.java:99)上
06-08 11:12:19.138:E/WindowManager(405):在android.os.Looper.loop(Looper.java:123)
06-08 11:12:19.138:E/WindowManager(405):在android.app.ActivityThread.main(ActivityThread.java:4627)上
06-08 11:12:19.138:E/WindowManager(405):位于java.lang.reflect.Method.Invokenactive(本机方法)
06-08 11:12:19.138:E/WindowManager(405):位于java.lang.reflect.Method.invoke(Method.java:521)
06-08 11:12:19.138:E/WindowManager(405):位于com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
06-08 11:12:19.138:E/WindowManager(405):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
06-08 11:12:19.138:E/WindowManager(405):在dalvik.system.NativeStart.main(本机方法)

您能发布完整的日志吗?您提供的代码片段应该在所有android版本上运行,并添加错误输出,它与您的问题有何关系?第一个logcat(大约一半)显示了我抛出的SQLiteException。当ZipInputStream在解压DB时得到IOException时,就会发生这种情况。这并不是发生在11以上的所有API级别上。对于API级别10及以下的情况,它始终失败。