首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android -下载并在手机存储中保存APK文件(而不是SD卡)

Android -下载并在手机存储中保存APK文件(而不是SD卡)
EN

Stack Overflow用户
提问于 2012-05-31 06:51:13
回答 2查看 2.8K关注 0票数 0

我试图从我的服务器下载一个APK文件,并将其保存在电话存储中。

下面是我使用的代码:

代码语言:javascript
复制
            String apkLink = "http://10.1.20.53/files/test.apk";
            URL url = new URL(apkLink);
            HttpURLConnection c = (HttpURLConnection) url.openConnection();
            c.setRequestMethod("GET");
            c.setDoOutput(true);
            c.connect();

            context.getDir("test.apk", Context.MODE_WORLD_WRITEABLE);
            FileOutputStream fos = context.openFileOutput("app_test.apk", Context.MODE_WORLD_WRITEABLE);

            InputStream is = c.getInputStream();
            fileSize = c.getContentLength();
            byte[] buffer1 = new byte[1024];
            int len1 = 0;
            int total = 0;
            while ((len1 = is.read(buffer1)) != -1) {
                total += len1;
                percentage = (int)(total*100/fileSize);
                publishProgress();
                fos.write(buffer1, 0, len1);
            }
            fos.close();
            is.close();

对于XML文件,同样的代码运行良好。(当我将XML文件下载到电话内存中时)。

有人能帮我吗?

谢谢

实际上我知道了原因,

context.getDir("test.apk",Context.MODE_WORLD_WRITEABLE);代码行创建一个名为"data/data/package_name/app_test.apk“的目录。

但是FileOutputStream fos = context.openFileOutput("app_test.apk");创建一个名为data/data/package_name/files/app_test.apk的目录。

我试图从data/data/package_name/app_test.apk目录中读取该文件。

不管怎样,现在我要用这段代码来执行这个文件,

代码语言:javascript
复制
File f = new File(getFilesDir()+ "/app_test.apk");

intent.setDataAndType(Uri.fromFile(f) , "application/vnd.android.package-archive");
startActivity(intent);

但是它给了我一个解析错误信息。

有人能想出解决办法吗?

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2012-06-01 08:21:33

创建文件时尝试使用Context.MODE_WORLD_READABLE|Context.MODE_WORLD_WRITEABLE。

票数 1
EN

Stack Overflow用户

发布于 2012-05-31 11:43:10

我已经回答了类似的问题,here。考虑到你的问题,我有几种不同的看法,为什么它不起作用。

  1. 您的应用程序将apk下载到其专用文件夹中,而且PackageManager可能没有读取此文件夹的权限。尝试将应用程序下载到sdcard上并运行它。
  2. 可能您的.apk文件没有正确签名。您是否用生成的签名签名或导出带有默认测试签名的文件?
  3. 如果您在一个真正的设备上测试此签名,则检查是否可以从其他来源(不仅是从Google市场)安装
  4. ,我不太记得,但可能调用PackageManager来安装您需要许可的应用程序。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10828723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档