android调用系统的安装方法出现ActivityNotFoundException的异常
来源:互联网 发布:win7精简优化版 编辑:程序博客网 时间:2024/06/05 11:24
今天测试下载新版本后自动安装,结果报错了~
后来查了一下,是DownloadManager的问题~
从Android 4.2开始,manager.getUriForDownloadedFile(id)将返回的scheme是content,返回uri是content://downloads/my_downloads/15,没有给出路径,这样调用系统的安装方法就会出现ActivityNotFoundException的异常,我找了很久终于找到了文件放在了哪里。
下面我把转化content的Uri为file的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; }
或者使用另外一种方式实现。
1.设置下载路径和文件名 本地记录文件名称
DownloadManager.Request request = new DownloadManager.Request(uri);String filename = name + ".apk";request.setDestinationInExternalPublicDir("download", filename );
2.调用系统安装的时候根据第一步记录的文件名称filename 来获取URI 而不是根据request返回的 downloadID参数
/** * 打开APK程序代码,安装应用 */ public void openFileForInstall() { Intent intent = new Intent(); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setAction(android.content.Intent.ACTION_VIEW); Uri uri = Uri.fromFile(new File(Environment.getExternalStorageDirectory(), filename )); intent.setDataAndType(uri, "application/vnd.android.package-archive"); startActivity(intent); }
阅读全文
0 0
- android调用系统的安装方法出现ActivityNotFoundException的异常
- Android的ActivityNotFoundException异常
- Android 调用系统浏览器 出现activitynotfoundexception 解决办法
- Android 调用浏览器 出现activitynotfoundexception解决思路的总结
- ActivityNotFoundException的避免方法
- Android异常---ActivityNotFoundException
- 《android.content.ActivityNotFoundException异常》
- android.content.ActivityNotFoundException异常
- 解决默认打开浏览器的ActivityNotFoundException异常
- Android调用系统EMAIL发送邮件崩溃,android.content.ActivityNotFoundException
- WEEX 使用navigator跳转Android系统出现ActivityNotFoundException报错
- android 调用系统其他已经安装的应用的方法
- Android 异常- android.content.ActivityNotFoundException:
- android开发好的界面点击出现android.content.ActivityNotFoundException 解决方法
- 【异常解决】android.content.ActivityNotFoundException
- 【异常解决】android.content.ActivityNotFoundException
- hadoop 安装出现的几种异常的处理方法
- Android 友盟中出现android.content.ActivityNotFoundException
- java日历类和包装类的注意点
- linux程序无源码调试的方法
- VS2013/MFC编程入门之一
- 对python字符串操作的几种方法(函数)
- SpringBoot配置属性中文释义MVC(一)
- android调用系统的安装方法出现ActivityNotFoundException的异常
- 素数与丑数
- daloRADIUS中文2017年
- 面试题5_逆序输出单链表
- Python设计模式-命令模式
- 【JVM】常用虚拟机参数及实例
- leetcode380. Insert Delete GetRandom O(1)
- 散列/哈希表
- POJ 2330 Advanced ASCII Cubes 笔记