概述
下载的APK在使用下面代码安装的时候提示解析安装包失败,APK本身没有问题,使用手机助手或者adb install 都可以正常安装。
/**
* 安装应用程序
*/
public void installAPK(String path) {
File apkfile = new File(path);
if (!apkfile.exists())
return;
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.putExtra(Intent.EXTRA_NOT_UNKNOWN_SOURCE, true); //表明不是未知来源
intent.setDataAndType(Uri.parse("file://" + apkfile.toString()),
"application/vnd.android.package-archive");
((Activity)context).startActivityForResult(intent, 0);
}
* 安装应用程序
*/
public void installAPK(String path) {
File apkfile = new File(path);
if (!apkfile.exists())
return;
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.putExtra(Intent.EXTRA_NOT_UNKNOWN_SOURCE, true); //表明不是未知来源
intent.setDataAndType(Uri.parse("file://" + apkfile.toString()),
"application/vnd.android.package-archive");
((Activity)context).startActivityForResult(intent, 0);
}
截取的Log如下

从日志里可以看出来是PermissonDenied,failed to open, Unable to read。测试后发现文件存储在程序Cache目录下才会出现这个问题,存储在SD卡并不报错,
所以在installApk方法中加一个chmod方法更改文件的访问权限,
问题解决!
/**
* 安装应用程序
*/
public void installAPK(String path) {
File apkfile = new File(path);
if (!apkfile.exists())
return;
chmod("777", path); //更改文件权限
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.putExtra(Intent.EXTRA_NOT_UNKNOWN_SOURCE, true); //表明不是未知来源
intent.setDataAndType(Uri.parse("file://" + apkfile.toString()),
"application/vnd.android.package-archive");
((Activity)context).startActivityForResult(intent, 0);
}
* 安装应用程序
*/
public void installAPK(String path) {
File apkfile = new File(path);
if (!apkfile.exists())
return;
chmod("777", path); //更改文件权限
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.putExtra(Intent.EXTRA_NOT_UNKNOWN_SOURCE, true); //表明不是未知来源
intent.setDataAndType(Uri.parse("file://" + apkfile.toString()),
"application/vnd.android.package-archive");
((Activity)context).startActivityForResult(intent, 0);
}
/**
* 获取权限
*
* @param permission
* 权限
* @param path
* 路径
*/
public void chmod(String permission, String path) {
try {
String command = "chmod " + permission + " " + path;
Runtime runtime = Runtime.getRuntime();
runtime.exec(command);
} catch (IOException e) {
e.printStackTrace();
}
}
* 获取权限
*
* @param permission
* 权限
* @param path
* 路径
*/
public void chmod(String permission, String path) {
try {
String command = "chmod " + permission + " " + path;
Runtime runtime = Runtime.getRuntime();
runtime.exec(command);
} catch (IOException e) {
e.printStackTrace();
}
}
最后
以上就是儒雅月光为你收集整理的解决APK下载到Cache目录安装提示“解析安装包失败”的问题的全部内容,希望文章能够帮你解决解决APK下载到Cache目录安装提示“解析安装包失败”的问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复