下载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,最大限度地减少自己在脚中射击的机会。