使用xutils下载到指定目录并安装apk的非常奇怪问题

qq_39206700 2017-06-27 05:46:17
1、需求是通过指定地址下载apk,在本地通知进度条展示过程,完成后到本地安装
2、使用包xutils-3.4.0-sources.jar(设置完全没有问题)
3、设置目录权限(其他权限都具备)
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="ruihao.downfile.fileprovider"
android:grantUriPermissions="true"
android:exported="false">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
file_paths.xml
<?xml version="1.0" encoding="utf-8"?>
<paths>
<files-path path="down" name="files_root" />
<files-path path="." name="files_root_down" />
<external-path path="down" name="sd_root" />
<external-path path="." name="external_storage_root" />
</paths>
4、写了一个服务,调用并下载,问题是现在包没有问题,路径没有问题,高版本低版本的系统也控制了,权限没有问题,通知也可以下载,
日志显示文件完全下载完,并且文件路径都找到



完成后启动安装的代码:
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {//高版本的android系统
Log.i("zh","----高版本");
Uri contentUri = FileProvider.getUriForFile(mContext, "ruihao.downfile.fileprovider", result);
intent.setDataAndType(contentUri, "application/vnd.android.package-archive");
startActivity(intent);
}else{
//低版本的android系统
Log.i("zh","----低版本");
intent.setDataAndType(Uri.fromFile(result), "application/vnd.android.package-archive");
startActivity(intent);
}
stopSelf();
错误结果:






...全文
224 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
jklwan 2017-06-28
  • 打赏
  • 举报
回复
data/data/包名,那是你app的私有目录,其他的应用怎么访问,亏你还做了Android7.0的兼容模式,下载目录放到sd就行了。
qq_39206700 2017-06-27
  • 打赏
  • 举报
回复
不是这两个问题,apk可以直接下载且可以安装,都没有问题,我现在发现是 "/data/data/ruihao.downfile/files/";里文件设置模式为 Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中。可以使用Context.MODE_APPEND Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件。 Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件。 MODE_WORLD_READABLE:表示当前文件可以被其他应用读取;MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入。 如果希望文件被其他应用读和写,可以传入: 但是不知道怎么改,
寒冰大神 2017-06-27
  • 打赏
  • 举报
回复
apk应该是签名了的吧。 1、安卓apk程序解析包出现问题的话,可能是由于你下载的apk程序本身就有问题,程序的压缩包可能在下载过程中被损坏了,建议请重新下载一次。 2、如果重新下载也解决不了安卓解析包出现问题的话,很大一个可能就是在于你的手机的配置参数不支持这款软件,举个例子吧,如果一款apk程序的系统版本要求在安卓2.2以上,而你的手机则是安卓2.1系统,就会出现“解析包时出现问题”这样的解析错误。

80,359

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧