首页 > 解决方案 > 使用 DownloadManager 以编程方式下载 Apk 文件后无法打开

问题描述

我已经使用 DownloadManager 从 http 本地服务器成功下载了 jpg 图像。同样,我尝试从 http 本地服务器下载 apk。Apk 正在成功下载。但是当我单击 Apk 时,它显示错误“解析包时出现问题”。以下是该问题的 logcat 跟踪。

06-12 19:59:22.321 26300 26317 I WifiService: requestActivityInfo uid=1000
06-12 19:59:22.321 26300 26317 I WifiService: reportActivityInfo uid=1000
06-12 19:59:22.321 26300 26317 I WifiService: getSupportedFeatures uid=1000
06-12 19:59:42.110  1440  1440 I boot-pipe: done populating /dev/random
06-12 19:59:48.108 26300 26313 E memtrack: Couldn't load memtrack module
06-12 19:59:48.108 26300 26313 W android.os.Debug: failed to get memory consumption info: -1
06-12 19:59:48.111 26300 26421 I ActivityManager: START u0 {act=android.provider.action.MANAGE_DOCUMENT dat=content://com.android.providers.downloads.documents/document/116 cmp=com.android.providers.downloads.ui/.TrampolineActivity} from uid 10012
06-12 19:59:48.138 26300 26313 E memtrack: Couldn't load memtrack module
06-12 19:59:48.138 26300 26313 W android.os.Debug: failed to get memory consumption info: -1
06-12 19:59:48.146 26764 26764 D DownloadManager: Found 116 with status 8, reason 0
06-12 19:59:48.153 26300 26313 E memtrack: Couldn't load memtrack module
06-12 19:59:48.153 26300 26313 W android.os.Debug: failed to get memory consumption info: -1
06-12 19:59:48.171 26300 26550 I ActivityManager: START u0 {act=android.intent.action.VIEW dat=content://com.android.providers.downloads.documents/document/116 typ=application/vnd.android.package-archive flg=0x3 cmp=com.google.android.packageinstaller/com.android.packageinstaller.InstallStart (has extras)} from uid 10011
06-12 19:59:48.177 26300 26313 E memtrack: Couldn't load memtrack module
06-12 19:59:48.177 26300 26313 W android.os.Debug: failed to get memory consumption info: -1
06-12 19:59:48.194 26300 26550 I ActivityManager: START u0 {act=android.intent.action.VIEW dat=content://com.android.providers.downloads.documents/document/116 typ=application/vnd.android.package-archive flg=0x2000000 cmp=com.google.android.packageinstaller/com.android.packageinstaller.InstallStaging (has extras)} from uid 10019
06-12 19:59:48.201 26300 26313 E memtrack: Couldn't load memtrack module
06-12 19:59:48.201 26300 26313 W android.os.Debug: failed to get memory consumption info: -1
06-12 19:59:48.269  1432  1494 D gralloc_ranchu: gralloc_alloc: Creating ashmem region of size 8298496
06-12 19:59:48.306 26300 26421 I WifiService: getConnectionInfo uid=10032
06-12 19:59:48.309 26300 26421 I WifiService: getWifiEnabledState uid=10032
06-12 19:59:48.309 26854 31533 W Settings: Setting mobile_data has moved from android.provider.Settings.Secure to android.provider.Settings.Global.
06-12 19:59:48.311 26854 31532 I ModelDownloadController: Handle the downloaded hotword model
06-12 19:59:48.311 26854 31532 I ModelDownloadController: the model is already used
06-12 19:59:48.420  1432  1494 D gralloc_ranchu: gralloc_alloc: Creating ashmem region of size 8298496
06-12 19:59:48.618  1432  1494 D gralloc_ranchu: gralloc_alloc: Creating ashmem region of size 8298496
06-12 19:59:48.828 26300 26345 I Choreographer: Skipped 30 frames!  The application may be doing too much work on its main thread.
06-12 19:59:48.833 26300 26550 I ActivityManager: START u0 {act=android.intent.action.VIEW dat=file:///data/user_de/0/com.google.android.packageinstaller/no_backup/package7159095910554268814.apk flg=0x10000 cmp=com.google.android.packageinstaller/com.android.packageinstaller.PackageInstallerActivity (has extras)} from uid 10019
06-12 19:59:48.915 29451 29466 D EGL_emulation: eglMakeCurrent: 0xb02b8bc0: ver 2 0 (tinfo 0x95310070)
06-12 19:59:49.173 29451 29451 W ziparchive: Zip: 7 extraneous bytes at the end of the central directory
06-12 19:59:49.173 29451 29451 W zipro   : Error opening archive /data/user_de/0/com.google.android.packageinstaller/no_backup/package7159095910554268814.apk: Invalid file
06-12 19:59:49.174 29451 29451 D asset   : failed to open Zip archive '/data/user_de/0/com.google.android.packageinstaller/no_backup/package7159095910554268814.apk'
06-12 19:59:49.174 29451 29451 W PackageParser: Failed to parse /data/user_de/0/com.google.android.packageinstaller/no_backup/package7159095910554268814.apk
06-12 19:59:49.174 29451 29451 W PackageParser: java.io.FileNotFoundException: AndroidManifest.xml
06-12 19:59:49.174 29451 29451 W PackageParser:         at android.content.res.AssetManager.openXmlAssetNative(Native Method)
06-12 19:59:49.174 29451 29451 W PackageParser:         at android.content.res.AssetManager.openXmlBlockAsset(AssetManager.java:546)
06-12 19:59:49.174 29451 29451 W PackageParser:         at android.content.res.AssetManager.openXmlResourceParser(AssetManager.java:514)
06-12 19:59:49.174 29451 29451 W PackageParser:         at android.content.pm.PackageParser.parseApkLite(PackageParser.java:1735)
06-12 19:59:49.174 29451 29451 W PackageParser:         at android.content.pm.PackageParser.parseMonolithicPackageLite(PackageParser.java:886)
06-12 19:59:49.174 29451 29451 W PackageParser:         at android.content.pm.PackageParser.parseMonolithicPackage(PackageParser.java:1274)
06-12 19:59:49.174 29451 29451 W PackageParser:         at android.content.pm.PackageParser.parsePackage(PackageParser.java:1009)
06-12 19:59:49.174 29451 29451 W PackageParser:         at android.content.pm.PackageParser.parsePackage(PackageParser.java:1029)
06-12 19:59:49.174 29451 29451 W PackageParser:         at com.android.packageinstaller.PackageUtil.getPackageInfo(PackageUtil.java:60)
06-12 19:59:49.174 29451 29451 W PackageParser:         at com.android.packageinstaller.PackageInstallerActivity.processPackageUri(PackageInstallerActivity.java:589)
06-12 19:59:49.174 29451 29451 W PackageParser:         at com.android.packageinstaller.PackageInstallerActivity.onCreate(PackageInstallerActivity.java:431)
06-12 19:59:49.174 29451 29451 W PackageParser:         at android.app.Activity.performCreate(Activity.java:7009)
06-12 19:59:49.174 29451 29451 W PackageParser:         at android.app.Activity.performCreate(Activity.java:7000)
06-12 19:59:49.174 29451 29451 W PackageParser:         at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1214)
06-12 19:59:49.174 29451 29451 W PackageParser:         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2731)
06-12 19:59:49.174 29451 29451 W PackageParser:         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856)
06-12 19:59:49.174 29451 29451 W PackageParser:         at android.app.ActivityThread.-wrap11(Unknown Source:0)
06-12 19:59:49.174 29451 29451 W PackageParser:         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589)
06-12 19:59:49.174 29451 29451 W PackageParser:         at android.os.Handler.dispatchMessage(Handler.java:106)
06-12 19:59:49.174 29451 29451 W PackageParser:         at android.os.Looper.loop(Looper.java:164)
06-12 19:59:49.174 29451 29451 W PackageParser:         at android.app.ActivityThread.main(ActivityThread.java:6494)
06-12 19:59:49.174 29451 29451 W PackageParser:         at java.lang.reflect.Method.invoke(Native Method)
06-12 19:59:49.174 29451 29451 W PackageParser:         at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
06-12 19:59:49.174 29451 29451 W PackageParser:         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
06-12 19:59:49.175 29451 29451 W PackageInstaller: Parse error when parsing manifest. Discontinuing installation
06-12 19:59:49.247  1432  1494 D gralloc_ranchu: gralloc_alloc: Creating ashmem region of size 2510848
06-12 19:59:49.308  1432  1494 D gralloc_ranchu: gralloc_alloc: Creating ashmem region of size 2510848
06-12 19:59:49.373  1432  1432 D gralloc_ranchu: gralloc_alloc: Creating ashmem region of size 2510848
06-12 19:59:49.458  1442  1442 D SurfaceFlinger: duplicate layer name: changing com.google.android.packageinstaller/com.android.packageinstaller.PackageInstallerActivity to com.google.android.packageinstaller/com.android.packageinstaller.PackageInstallerActivity#1
06-12 19:59:49.483  1432  1432 D gralloc_ranchu: gralloc_alloc: Creating ashmem region of size 8298496
06-12 19:59:49.706  1432  1432 D gralloc_ranchu: gralloc_alloc: Creating ashmem region of size 8298496
06-12 19:59:49.922  1432  1494 D gralloc_ranchu: gralloc_alloc: Creating ashmem region of size 8298496
06-12 19:59:50.154 29451 29451 I Choreographer: Skipped 54 frames!  The application may be doing too much work on its main thread.
06-12 19:59:50.167 29451 29466 D EGL_emulation: eglMakeCurrent: 0xb02b8bc0: ver 2 0 (tinfo 0x95310070)
06-12 19:59:50.504 29451 29466 I chatty  : uid=10019(com.google.android.packageinstaller) RenderThread identical 4 lines
06-12 19:59:50.514 29451 29466 D EGL_emulation: eglMakeCurrent: 0xb02b8bc0: ver 2 0 (tinfo 0x95310070)
06-12 19:59:50.525 26300 26321 I ActivityManager: Displayed com.google.android.packageinstaller/com.android.packageinstaller.PackageInstallerActivity: +1s368ms (total +2s393ms)

代码

private long downloadImage(Uri downloadUri, Uri destinationUri){
        long downloadReference;

        downloadManager = (DownloadManager) this.context.getSystemService(Context.DOWNLOAD_SERVICE);

        DownloadManager.Request request = new DownloadManager.Request(downloadUri);
        
        request.setMimeType(MIME_TYPE);//MIME_TYPE = "application/vnd.android.package-archive";
        request.setTitle(FILE_NAME);//my_file.apk
        request.setAllowedOverMetered(true);
        request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI);
        request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_MOBILE);
        request.setDescription("Apk is downloading...");
        
        request.setDestinationInExternalPublicDir(this.context.getExternalFilesDir(
                    Environment.DIRECTORY_DOWNLOADS) + "/NewFile", FILE_NAME);//FILE_NAME = my_file.apk
        request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
        downloadReference = downloadManager.enqueue(request);


        return  downloadReference;
    }

你能帮我解决这个问题吗?

标签: androidandroid-download-manager

解决方案


推荐阅读