Andrid Tv开发中下载第三方应用,解析包失败。
16lz
2021-01-25
前提条件是,电视机没有外置SD卡。这时候下载应用 要存储在内置的空间里。可以写入进入却无法,打开。打开报解析包出现问题。
最后的解决方法是:内置空间没有权限读取。
Android4.4
//当你下载完成后,并保存在指定的路径。这个路径可以写入,却无法读取 //先给权限 setUpdateDir(new File(getApplicationContext().getDir("app", MODE_WORLD_WRITEABLE) + "/" + "SPA")); //再安装 installApp(getApplicationContext().getDir("app", MODE_WORLD_WRITEABLE) + "/" + "SPA");/** * 内置存储中给指定的文件权限。 * * @param updateDir 文件路径位置 */ private void setUpdateDir(File updateDir) { try { Process p = Runtime.getRuntime().exec("chmod 777 " + updateDir); int status = p.waitFor(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } //根据指定路径安装APP private void installApp(String path) { Intent intent = new Intent(Intent.ACTION_VIEW); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setDataAndType(Uri.parse("file://" + path), "application/vnd.android.package-archive"); startActivity(intent); }
例子:
使用okgo下载
/** * 下载第三方 * @param url APP路径 * @param */ public void downLoadApp(String url) { OkGo.get(url) .tag(this) .execute(new FileCallback(getApplicationContext().getDir("app", MODE_WORLD_WRITEABLE)+"/", "dsf") { @Override public void onStart(Request request) { super.onStart(request); showDialog(getResources().getString(R.string.loading_string)); } @Override public void onSuccess(Response response) {//sdcard/download/ 默认下载路径 setUpdateDir(new File(getApplicationContext().getDir("app", MODE_WORLD_WRITEABLE) + "/" +"dsf"));//先给权限 //再安装 installApp(getApplicationContext().getDir("app", MODE_WORLD_WRITEABLE) + "/" + "dsf" ); hud.dismiss();// startActivity(intent);//下载完后 启动应用。 } @Override public void downloadProgress(Progress progress) { super.downloadProgress(progress);// dialog.setPRo((int) progress.fraction); } @Override public void onFinish() { super.onFinish(); } }); }
更多相关文章
- 一款常用的 Squid 日志分析工具
- GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
- RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
- Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
- Android之Menu基本使用(显示图标icon)
- 【Sublinux】Station P1在Android上使用容器Docker
- 用百度API高仿微信定位demo
- 保护你的隐私,五种控制Android应用的权限的方法
- Android(安卓)so lib库远程http下载和动态注册