将 HttpResponse 转换为 .apk 文件

2024-04-01

问题是这样的:

我与某个 url 建立互联网连接并收到带有 app_example.apk 的 HttpResponse。

然后我想创建一个文件(.apk) 在带有此数据的 SD 卡中,以便此下载的应用程序 可以稍后安装。

如何将 HttpResponse 转换为 .apk 文件?

让我们澄清一些细节:

  • 我必须通过互联网连接到我的服务器获取此 apk 文件
  • 我不想安装 SD 卡上收到的此应用程序
  • 所有这些都必须在我的代码中完成,我无法使用 android market

我目前正在写入该文件。

我正在做的是将 HttpResponse 转换为字节[],

然后使用 ObjectOutputStream 将 byte[ ] 写入文件(.apk)。

像这样:

    // byte[] appByteArray - already has the internet response converted in bytes

    try {
    file = new File(Environment.getExternalStorageDirectory()+"/"+appName+".apk");

    file.createNewFile();

    FileOutputStream stream = null;

    stream = new FileOutputStream(file, false);

    ObjectOutputStream objectOut =
        new ObjectOutputStream(new BufferedOutputStream(stream));

    objectOut.writeObject(appByteArray);

    objectOut.close();

    } catch (Exception e) {
        e.printStackTrace();
    }

最后,文件就创建完成了 并有收到的内容。

当我尝试安装它时, 通过 VIEW 意图(使用默认安装程序) 我收到解析错误,指出找不到 AndroidManifest.xml。

我认为在这个过程中的某个步骤中,接收到的数据正在被损坏。

您还有其他方法来解决这个问题吗?

非常感谢


  1. 不要使用 ObjectOutputStream,字节数组被序列化为对象,而不是作为原始数据写入。
  2. 您确定您有SD卡写入权限吗? android.permission.WRITE_EXTERNAL_STORAGE
  3. 不要写入SD卡根目录。根目录中的文件数量可以受到限制。相反,请在 SD 卡上创建应用程序子目录。

这段代码对我有用:

    try {
        String filePath = Environment.getExternalStorageDirectory()
                + "/myappdir/" + appName + ".apk";

        File file = new File(filePath);
        file.getParentFile().mkdirs();
        file.createNewFile();

        BufferedOutputStream objectOut = new BufferedOutputStream(
                new FileOutputStream(file));

        objectOut.write(appByteArray);

        objectOut.close();

    } catch (Exception e) {
        e.printStackTrace();
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 HttpResponse 转换为 .apk 文件 的相关文章

  • 找不到参数的方法 dependencyResolutionManagement()

    我正在尝试使用老师给我的一个项目 但它显示了一个错误 Settings file Users admin AndroidStudioProjects HTTPNetworking settings gradle line 1 A probl
  • 如何清除所有WebView存储的信息?

    我有一个 Android 浏览器 我可以选择清除缓存 存储 cookie 等 代码如下所示 webView clearCache true webView clearFormData webView clearHistory webView
  • android中向sqlite中插入大量数据

    目前 我必须一次向我的 Android 中插入超过 100 亿条数据 然而 内存不足的问题会使程序崩溃 sqlite 插入测试非常简单 只需使用 for 循环生成 sql 插入命令并通过 开始 和 提交 进行包装 private Array
  • java.lang.NoClassDefFoundError:org.apache.batik.dom.svg.SVGDOMImplementation

    我在链接到我的 Android LibGDX 项目的 Apache Batik 库时遇到了奇怪的问题 但让我们从头开始 在 IntelliJ Idea 中我有一个项目 其中包含三个模块 Main Android 和 Desktop 我强调的
  • 在 HTTPResponse Android 中跟踪重定向

    我需要遵循 HTTPost 给我的重定向 当我发出 HTTP post 并尝试读取响应时 我得到重定向页面 html 我怎样才能解决这个问题 代码 public void parseDoc final HttpParams params n
  • 无法访问 com.google.android.gms.internal.zzbfm 的 zzbfm 类文件未找到

    我正在将我的 Android 应用程序项目从GCM to FCM 为此 我使用 Android Studio 中的 Firebase 助手工具 并遵循 Google 开发人员指南中的说明 一切都很顺利 并将我的应用程序代码更改为FCM根据助
  • 是否有 ADB 命令来检查媒体是否正在播放

    我想使用 ADB 命令检查根植于终端的外部设备中是否正在播放音频 视频 我无法找到任何 ADB 命令 如果有 我尝试过 adb shell dumpsys media player 我想要一个命令来指定视频是否正在运行 您可以使用以下命令查
  • Android MediaExtractor seek() 对 MP3 音频文件的准确性

    我在使用 Android 时无法在eek 上获得合理的准确度MediaExtractor 对于某些文件 例如this one http www archive org download emma solo librivox emma 01
  • JavaMail 只获取新邮件

    我想知道是否有一种方法可以在javamail中只获取新消息 例如 在初始加载时 获取收件箱中的所有消息并存储它们 然后 每当应用程序再次加载时 仅获取新消息 而不是再次重新加载它们 javamail 可以做到这一点吗 它是如何工作的 一些背
  • 在 SQLite 中搜索时排除 HTML 标签和一些 UNICODE 字符

    更新 4 我已经成功运行了firstchar例如 但现在的问题是使用regex 即使包含头文件 它也无法识别regex操作员 有什么线索可以解决这个问题吗 更新 2 我已经编译了sqlite3我的项目中的库 我现在正在寻找任何人帮助我为我的
  • 如何使用InputConnectionWrapper?

    我有一个EditText 现在我想获取用户对此所做的所有更改EditText并在手动将它们插入之前使用它们EditText 我不希望用户直接更改中的文本EditText 这只能由我的代码完成 例如通过使用replace or setText
  • 在 android DatePickerDialog 中将语言设置为法语

    有什么办法可以让日期显示在DatePickerDialog用法语 我已经搜索过这个但没有找到结果 这是我的代码 Calendar c Calendar getInstance picker new DatePickerDialog Paym
  • Android Studio 0.4.3 Eclipse项目没有gradle

    在此版本之前 在 Android Studio 中按原样打开 Eclipse 项目似乎很容易 无需任何转换 我更喜欢 Android Studio 环境 但我正在开发一个使用 eclipse 作为主要 IDE 的项目 我不想只为这个项目下载
  • Android Studio - Windows 7 上的 Android SDK 问题

    我对 Google i o 2013 上发布的最新开发工具 Android Studio 有疑问 我已经成功安装了该程序并且能够正常启动 我可以导入现有项目并对其进行编辑 但是 当我尝试单击 SDK 管理器图标或 AVD 管理器图标时 或者
  • 在activity_main.xml中注释

    我是安卓新手 据我所知 XML 中的注释与 HTML 中的注释相同 使用 形式 我想在 Android 项目的 Activity main xml 配置文件中写一些注释 但它给了我错误 值得注意的是 我使用的是 Eclipse 但目前 我直
  • 实现滚动选择 ListView 中的项目

    我想使用 ListView 您可以在其中滚动列表来选择一个项目 它应该像一个 Seekbar 但拇指应该是固定的 并且您必须使用该栏来调整它 我面临的一个问题是 我不知道这种小部件是如何调用的 这使得我很难搜索 所以我制作了下面这张图片 以
  • 捕获的图像分辨率太大

    我在做什么 我允许用户捕获图像 将其存储到 SD 卡中并上传到服务器 但捕获图像的分辨率为宽度 4608 像素和高度 2592 像素 现在我想要什么 如何在不影响质量的情况下获得小分辨率图像 例如我可以获取或设置捕获的图像分辨率为原始图像分
  • 将两个文本视图并排放置在布局中

    我有两个文本视图 需要在布局中并排放置 并且必须遵守两条规则 Textview2 始终需要完整显示 如果布局中没有足够的空间 则必须裁剪 Textview1 例子 文本视图1 文本视图2 Teeeeeeeeeeeeeeeeeextview1
  • 如何将 google+ 登录集成到我的 Android 应用程序中?

    大家好 实际上我需要通过我的应用程序从 google 登录人们 现在我阅读了 google 上的文档 其中指出 要允许用户登录 请将 Google Sign In 集成到您的应用中 初始化 GoogleApiClient 对象时 请求 PL
  • Crashlytics 出现 Android Studio 构建错误

    我正在尝试将 CrashLytics 与 Android Studio 和 gradle 一起使用 但出现一个令人困惑的错误 java lang NoSuchMethodError 我的 build gradle 是 buildscript

随机推荐

  • 使用 JavaScript 获取给定月份的给定工作日

    我试图获取某个日期所在月份的第 n 个工作日 例如 第二个星期日 例如 如果日期是 2015 年 8 月 24 日 我想这样做 nthDayOfMonth 0 2 new Date 2015 7 24 并获取 2015 年 8 月 9 日
  • iPhone REST 客户端 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • AlertDialog 中的 Android EditText 似乎太宽

    下图中的 EditText 似乎太宽了 我假设我以某种方式滥用了 SDK 除非确信 否则我不会寻找一种方法来指定边缘 填充像素的数量EditText 这个看起来比较合适 这是我的代码 创建第一个 创建标签 对话框 final Dao
  • websphere - CWWKE0054E 错误无法打开文件

    我正在尝试从命令行运行 websphere liberty profile 服务器 我正在按照此处所述的步骤进行操作 https developer ibm com wasdev downloads liberty profile usin
  • netstandard20 中的 System.Data.Linq

    我有一个引用 Net 4 6 项目的 netstandard20 项目 除了我调用 Net 4 6 项目中的任何功能之外 所有项目都会编译和运行 我收到以下错误 FileNotFoundException 无法加载文件或程序集 System
  • 自动运行 CSS 更改

    我知道有解决方案可以解决这个问题 但我想在我的 自己的 你必须知道你的限制 Hello stackoverflow 路径上完成这项工作 所以我想要一种轮播 只要用户不将鼠标悬停在 ul 区域上 整个 ul 元素就会在每个设定的时间间隔内获得
  • group by 和 group concat ,不使用main pk优化mysql查询

    我的例子是 MYSQL 版本是 5 6 34 日志 Problem摘要以下查询需要40秒 订单商品 table has 758423 records And PAYMENT table has 177272 records And 提交条目
  • LINQ to Entities 不支持 LINQ 表达式节点类型“ArrayIndex”

    public List
  • 选项卡更改时刷新/重新加载 MUI WPF 页面

    我正在使用 WPF 的 Modern UI 开发桌面应用程序 当我转到新标签页时 我尝试刷新我的标签页 但我做不到 当我使用选项卡控制器转到另一个页面时 我想刷新我的 MUI WPF 选项卡页面 谁能帮我 我不太清楚你的意思到底是什么 但是
  • 将字符串中保存的数字中的每个数字转换为 int 数组

    我正在 DFA 上编写这个项目 我想将保存为字符串的整数的每个数字保存并转换为 int 数组 这是负责此操作的函数的代码 int l final states size int temp final temp final new int l
  • 覆盖 Rails 中的 MIME 类型

    我想将 Rails 中的 JSON MIME 类型 application json 覆盖为 text x json 我尝试在 mime types rb 中再次注册 MIME 类型 但这不起作用 有什么建议么 Thanks 这应该可以工作
  • c2512 错误:没有合适的默认构造函数可用

    即使我声明了构造函数 我也遇到了 c2512 错误 我的代码是这样的 在我的 first h 文件中 我将其声明为 class myClass public tmpM cv Mat model 然后在我的 first cpp 中我做了 in
  • 从 Word OLE 应用程序对象获取应用程序标题

    有没有办法从 Word Application OLE 对象获取窗口标题 我想用它来尝试使用窗口FindWindow 我正在创建一个 OLE 对象并添加一个现有文档 如下所示 App CreateOLEObject Word Applica
  • Java - 如何限制特定方法的方法调用

    我有一个特殊的要求 我需要确保只允许一个类中的特定方法调用第二个类中的公共 非静态 方法 不能使用继承 一种选择是使用 StackTrace 如下所示 A类 java package org rnd stack public class C
  • .ToTitleCase 不适用于所有大写字符串

    Public Function TitleCase ByVal strIn As String Dim result As String Dim culture As New CultureInfo en False Dim tInfo A
  • 将 std::wstring 从 Visual Studio 移植到 mingw gcc

    我正在将一些代码从 Visual Studio 移植到 mingw gcc 我看到了这个声明 if mnode GetTag T val return true 这是 GetTag 方法的定义 const std wstring GetTa
  • Python 多处理与多线程相结合

    我不确定我想做的是否是有效的做法 但事情是这样的 我需要我的程序高度并行化 所以我想我可以创建 2 3 个进程 每个进程可以有 2 3 个线程 1 这可能吗 2 这有什么意义吗 3 这是我的代码 但当我尝试加入进程时它会挂起 PQ mult
  • 如何在 React-Navigation/Drawer 6 中实现“返回”

    我在 React navigation drawer 6 中实现 goBack 功能时遇到问题 react navigation drawer 6 1 4 准确地说 我能够使用以下代码在react navigation drawer 5中完
  • 解析 JSON 数据以将其显示在 gridview 中

    我创建了一个应用程序 它将数据从 URL 解析为 JSON 对象并将其显示在GridView 虽然没有显示错误 但每次运行应用程序时都会收到消息不幸的是 应用程序已停止运行 这是我的申请文件 MainActivity java packag
  • 将 HttpResponse 转换为 .apk 文件

    问题是这样的 我与某个 url 建立互联网连接并收到带有 app example apk 的 HttpResponse 然后我想创建一个文件 apk 在带有此数据的 SD 卡中 以便此下载的应用程序 可以稍后安装 如何将 HttpRespo