【问题标题】:APK not being deleted from download folderAPK 未从下载文件夹中删除
【发布时间】:2019-08-22 08:32:44
【问题描述】:

我设置了一个Broadcast,它在ApplicationstartActivityForResult() 一起安装时启动。安装Intent在这里创建。

private static Intent getOpenDownloadedApkIntent(Context context, File file) {

    String name = getPackageNameForAPK(file.getPath(), context);
    if (name != null) {
        INSTALL_APK_INFO.put(name, file);
    }

    // The type of intent to use to open the downloaded apk changed in Android N (7.0)
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
        Uri path = FileProvider.getUriForFile(context,
                context.getApplicationContext().getPackageName() + ".utils.DownloadedFileProvider",
                file);
        Intent intent = new Intent(Intent.ACTION_INSTALL_PACKAGE);
        intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
        intent.putExtra(Intent.EXTRA_RETURN_RESULT, true);
        intent.setData(path);
        return intent;
    } else {
        Uri uri = Uri.fromFile(file);
        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.putExtra(Intent.EXTRA_RETURN_RESULT, true);
        intent.setDataAndType(uri, "application/vnd.android.package-archive");
        return intent;
    }
}

private static String getPackageNameForAPK(final String archiveFilePath, Context context) {
    try {
        PackageInfo info = context.getPackageManager().getPackageArchiveInfo(archiveFilePath, PackageManager.GET_META_DATA);
        return info.packageName;
    } catch (Exception ex) {
        ex.printStackTrace();
        return null;
    }

}

现在如果是 Android 7 或更高版本,那么卸载工作,但如果它是 Android 6 或更低版本,那么它似乎只是删除了 APK 的图标而不是 APK 本身。

这是应该删除APK的代码:

private static BroadcastReceiver onInstallComplete = new BroadcastReceiver() {

        @Override
        public void onReceive(Context context, Intent intent) {
            ApplicationInfo info = null;
            try {
                info = context.getPackageManager().getApplicationInfo(intent.getDataString().split(":")[1], PackageManager.GET_META_DATA);
            } catch (PackageManager.NameNotFoundException ex) {
            }

            try {
                if (info != null) {
                    File file = INSTALL_APK_INFO.get(info.packageName);
                    if (file != null) {
                          file.delete();
                        INSTALL_APK_INFO.remove(info.packageName);
                    }
                }
            } catch (NullPointerException ex) {
            }

        }
    };

我猜这与路径有关,但同时它似乎删除了APK 的图标。我所说的图标是指如果我删除file.delete(),那么APK 在下载文件夹中带有图标,但如果我运行file.delete(),那么APK 就没有图标。

我做错了什么?

【问题讨论】:

    标签: java android file android-intent apk


    【解决方案1】:

    你的意思是说应用程序正在安装但没有启动器图标?

    【讨论】:

    • 没有按应有的方式安装应用程序,但安装后我想从手机的“下载”文件夹中删除下载的 APK。当我卸载它时,它就会发生。
    猜你喜欢
    • 2019-02-13
    • 1970-01-01
    • 2020-09-02
    • 1970-01-01
    • 2015-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多