android调用系统的安装方法出现ActivityNotFoundException的异常

从Android 4.2开始,manager.getUriForDownloadedFile(id)将返回的schemecontent,返回uricontent://downloads/my_downloads/<id>,没有给出路径,这样调用系统的安装方法就会出现ActivityNotFoundException的异常,我找了很久终于找到了文件放在了哪里。
下面我把转化contentUrifile的Uri方法分享给大家;

 /**
     * 转化contentUri为fileUri
     *
     * @param contentUri 包含content的Uri
     * @param downLoadId 下载方法返回系统为当前下载请求分配的一个唯一的ID
     * @param manager    系统的下载管理
     *
     * @return fileUri
     */
    private Uri getApkFilePathUri(Uri contentUri, long downLoadId, DownloadManager manager) {
        DownloadManager.Query query = new DownloadManager.Query();
        query.setFilterById(downLoadId);
        Cursor c = manager.query(query);
        if (c.moveToFirst()) {
            int columnIndex = c.getColumnIndex(DownloadManager.COLUMN_STATUS);
            // 下载失败也会返回这个广播,所以要判断下是否真的下载成功
            if (DownloadManager.STATUS_SUCCESSFUL == c.getInt(columnIndex)) {
                // 获取下载好的 apk 路径
                String downloadFileLocalUri = c.getString(c.getColumnIndex(DownloadManager
                        .COLUMN_LOCAL_URI));
                if (downloadFileLocalUri != null) {
                    File mFile = new File(Uri.parse(downloadFileLocalUri).getPath());
                    String uriString = mFile.getAbsolutePath();
                    // 提示用户安装
                    contentUri = Uri.parse("file://" + uriString);
                }
            }

        }
        return contentUri;
    }

然后就可以调用这个方法来启动安装了

java
Intent install = new Intent(Intent.ACTION_VIEW);
install.setDataAndType(downloadFileUri, "application/vnd.android.package-archive");
install.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(install);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值