下载android扩展文件时发现文件异常

问题描述:

我正在创建一个cordova插件来下载扩展文件。 目前,我正在实施扩展文件将被手动下载。下载android扩展文件时发现文件异常

的请求将被发送,但我得到的错误

aborting request for download main.1000004.my.name.app.obb: while writing destination file: java.io.FileNotFoundException: /storage/emulated/0/Android/obb/my.name.app/main.1000004.my.name.app.obb.tmp: open failed: ENOENT (No such file or directory) 
02-20 17:12:12.930 15355-15631/my.name.app W/System.err: com.google.android.vending.expansion.downloader.impl.DownloadThread$StopRequest: while writing destination file: java.io.FileNotFoundException: /storage/emulated/0/Android/obb/my.name.app/main.1000004.my.name.app.obb.tmp: open failed: ENOENT (No such file or directory) 
W/System.err:  at com.google.android.vending.expansion.downloader.impl.DownloadThread.writeDataToDestination(DownloadThread.java:515) 
W/System.err:  at com.google.android.vending.expansion.downloader.impl.DownloadThread.transferData(DownloadThread.java:350) 
W/System.err:  at com.google.android.vending.expansion.downloader.impl.DownloadThread.executeDownload(DownloadThread.java:308) 
W/System.err:  at com.google.android.vending.expansion.downloader.impl.DownloadThread.run(DownloadThread.java:236) 
W/System.err:  at com.google.android.vending.expansion.downloader.impl.DownloaderService.onHandleIntent(DownloaderService.java:1086) 
W/System.err:  at com.google.android.vending.expansion.downloader.impl.CustomIntentService$ServiceHandler.handleMessage(CustomIntentService.java:104) 
W/System.err:  at android.os.Handler.dispatchMessage(Handler.java:102) 
W/System.err:  at android.os.Looper.loop(Looper.java:148) 
W/System.err:  at android.os.HandlerThread.run(HandlerThread.java:61) 
W/System.err: Caused by: java.io.FileNotFoundException: /storage/emulated/0/Android/obb/my.name.app/main.1000004.my.name.app.obb.tmp: open failed: ENOENT (No such file or directory) 
W/System.err:  at libcore.io.IoBridge.open(IoBridge.java:452) 
W/System.err:  at java.io.FileOutputStream.<init>(FileOutputStream.java:87) 
W/System.err:  at java.io.FileOutputStream.<init>(FileOutputStream.java:127) 
W/System.err:  at com.google.android.vending.expansion.downloader.impl.DownloadThread.writeDataToDestination(DownloadThread.java:496) 
W/System.err: ... 8 more 
W/System.err: Caused by: android.system.ErrnoException: open failed: ENOENT (No such file or directory) 
W/System.err:  at libcore.io.Posix.open(Native Method) 
W/System.err:  at libcore.io.BlockGuardOs.open(BlockGuardOs.java:186) 
0W/System.err: at libcore.io.IoBridge.open(IoBridge.java:438) 

其实,我现在的主要扩展版本是1000013.但搜索1000004.内容是一样的,所以这不是问题。

权利应可

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 

知道为什么这会发生?

我认为这是因为Google Play控制台没有与您当前的版本代码关联的正确扩展文件。确保您在Play控制台中上传并选择了正确的扩展文件以及APK。

如果没有帮助,请通过致电Helpers.isExternalMediaMounted()检查您的外部存储是否可以挂载。您的设备可能没有SD卡(模拟器?)。另外,您可能需要通过调用Helpers.canWriteOBBFile(Context)来检查您的应用程序是否可以访问OBB目录。

我推荐使用包含在Better APK Expansion包中的更新后的下载程序库。它有几个固定的问题,并提供简化的API,最大限度地减少自己在脚中射击的机会。