Android 以编程方式安装 apk 错误 - 包解析错误

2024-01-08

我在我的页面上创建一个 Edittext,以允许用户通过下载 apk 并安装来更新应用程序。我正在使用 loojp 库来处理异步任务。

我的活动代码:

f0textupdate.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(final View view) {
            try {
                view.setEnabled(false);
                final ProgressBar f0progress = (ProgressBar) findViewById(R.id.f0progress);
                f0progress.setProgress(0);
                mHttpClient.get("http://google.com/apps.apk", new FileAsyncHttpResponseHandler(lastcreated) {

                    @Override
                    public void onSuccess(int i, Header[] headers, File file) {
                        //sendBroadcast(new Intent(Intent.ACTION_INSTALL_PACKAGE, Uri.fromFile(file)));
                        try {
                            String path = file.getParent()+"/"+ CfgMain.siteid+ ".apk";
                            File dst = new File(path);
                            if (!dst.exists()) {
                                try {
                                    dst.createNewFile();
                                } catch (IOException e) {
                                    e.printStackTrace();
                                }
                            }

                            InputStream in = new FileInputStream(file);
                            OutputStream out = new FileOutputStream(dst);

                            // Transfer bytes from in to out
                            byte[] buf = new byte[1024];
                            int len;
                            while ((len = in.read(buf)) > 0) {
                                out.write(buf, 0, len);
                            }
                            in.close();
                            out.close();

                            Intent installIntent = new Intent();
                            installIntent.setAction(Intent.ACTION_INSTALL_PACKAGE);
                            installIntent.setDataAndType(Uri.fromFile(dst), "application/vnd.android.package-archive");
                            installIntent.putExtra(Intent.EXTRA_NOT_UNKNOWN_SOURCE, true);
                            installIntent.putExtra(Intent.EXTRA_RETURN_RESULT, true);
                            installIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                            startActivity(installIntent);

                        } catch (FileNotFoundException e) {
                            e.printStackTrace();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }

                    @Override
                    public void onFailure(int i, Header[] headers, Throwable throwable, File file) {
                        if (file.exists()) {
                            file.delete();
                        }
                    }

                    @Override
                    public void onProgress(long bytesWritten, long totalSize) {
                        int totProgress = (int) (((float) bytesWritten * 100) / totalSize);
                        if (totProgress > 0) {
                            f0progress.setVisibility(View.VISIBLE);
                            f0progress.setProgress(totProgress);
                        }
                    }

                });
            } catch (Exception ex) {

            }

        }
    });

清单.xml

   <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />

它提示错误消息“包解析错误”。

1)我是否需要在下载后按照原始apk名称转换文件名,因为“文件文件”似乎存储为没有扩展名的临时名称

Update 1来自 logCat 的错误:

05-17 11:17:19.142 4562-4562/? W/zipro:无法打开 zip '/data/data/com.M28/cache/77lori.apk':权限被拒绝

05-17 11:17:19.152 4562-4562/? W/PackageParser:无法读取/data/data/com.MMM/cache/MM.apk的AndroidManifest.xml java.io.FileNotFoundException:AndroidManifest.xml

更新1.1- 更改 Onsuccess()

  • 在 Manifest.xml 添加附加权限

好的找到了一个solution https://forums.xamarin.com/discussion/5272/stuck-on-running-downloaded-apk-there-was-a-problem-parsing-the-package来自其他论坛(xamarin)并解决我的问题.. 您需要将 APK 保存到公共目录。

例如:

String path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)+"/MM.apk";
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 以编程方式安装 apk 错误 - 包解析错误 的相关文章

  • 安卓市场API

    有谁知道Android市场是否有一个API 可以自动提交新应用程序 而无需手动填写市场表格 不 抱歉 没有程序化的方式来提交市场列表 据推测 这是一种反垃圾邮件发送者措施
  • 将项目升级到最新版本的 Cordova 4.0.0 时,控制台中出现 TypeError“无法设置 # 的属性连接”

    今天 我将 Cordova CLI 从版本 3 5 升级到版本 4 0 此后 我将项目的平台支持更新到最新版本的 Android 因为它们现在是单独更新的 从那时起 每当我运行时 我都会出现此错误cordova run android 我收
  • 在webview android上显示网页的一部分

    我想制作一个将网页内容加载到 webview 中的应用程序 我只想显示整个网页视图中的特定内容 而不是网页的全部内容 这是一个例子 如果我使用 作为 webview 的 URL 它会加载 webview 上页面的所有内容 但我想删除页面的横
  • Android API版本兼容性

    我希望我的应用程序能够在 Android 版本 2 1 和 2 2 上运行 在我的应用程序的一个区域中 有一个肖像式相机 生成肖像相机预览的过程在两个操作系统版本上是不同的 据我所知 具体方法如下 2 1 Camera Parameters
  • “_Smi”不是“bool”类型的子类型 - Flutter MethodChannel

    收到这个奇怪的错误 似乎 MethodChannel 正在转换为 int 而不是 bool 06 07 00 16 26 589 3678 4993 E flutter ERROR topaz lib tonic logging dart
  • 如何在 Android 上以编程方式截取屏幕截图?

    如何不通过任何程序而是通过代码截取手机屏幕的选定区域的屏幕截图 以下代码允许将我的屏幕截图存储在 SD 卡上 并在以后满足您的任何需求 首先 您需要添加适当的权限来保存文件
  • 如何将图片保存到文件中?

    我正在尝试使用标准意图来拍照 然后允许批准或重新拍摄 然后我想将图片保存到文件中 这是我正在使用的意图 Intent intent new Intent android provider MediaStore ACTION IMAGE CA
  • 动态创建形状

    我有一个在 XML 中定义的形状对象 如下所示
  • 使用 navhost 停止底部导航中的片段刷新

    这个问题已经被问过几次了 但现在已经是 2020 年了 有没有人找到一个好的可用的解决方案呢 我希望能够使用底部导航控件进行导航 而无需在每次选择片段时刷新片段 这是我目前拥有的 导航 main xml
  • Android 4.3 的 Google 地图 Android API V2 问题

    我是谷歌地图的新手 刚刚点击此链接http www androidhive info 2013 08 android working with google maps v2 http www androidhive info 2013 08
  • 当您处于飞行模式并退出飞行模式时,我只收到最后一条 FCM 推送通知?

    我只在退出飞行模式后收到最后的推送通知 FCM 但是 如果我的应用程序位于前台 一旦我离开飞行模式 我将收到所有推送通知 我已将 FCM 消息类型实现为通知消息 笔记 无法将 FCM 消息类型实现为数据消息 因为 APNS 只接受我的 iO
  • 如何检查应用程序是否违反 Google 的假冒政策

    我的应用程序已从 Google Play 商店中删除 原因如下 经审核 我的应用 有 由于政策罢工而被暂停并从 Google Play 中删除 因为 它违反了假冒政策 有没有其他方法可以在发布之前检查应用程序是否遵守所有 Google 政策
  • java.lang.UnsupportedOperationException:无法解析索引 13 处的属性:TypedValue{t=0x2/d=0x7f010046 a=-1}

    我在 android attrs xml 文件中添加了一个用于不同色调的属性 在 styles xml 文件中 我为这些属性指定了颜色 因此每种样式的它们都不同 Attrs xml
  • 没有 ContentProvider 的 SyncAdapter

    我想为我想要与服务器同步的内容实现 SyncAdapter 看来要做到这一点 您需要为 SyncAdapter XML 属性文件中指定的权限注册一个 ContentProvider 由于我不希望手机的其余部分可以访问此内容 因此我没有实现自
  • 使用远程数据编写 Android、iPad、iPhone 客户端的技术

    我需要探索世界 你写了一个杀手级应用程序 但你有 Android iPhone iPad 客户端吗 我的问题是 1 向这些设备发送数据的最佳方式是什么 按照建议进行肥皂和休息here https stackoverflow com ques
  • 存储 FCM 的令牌

    我正在尝试将我的令牌存储在我的云数据库中 我稍后将在云函数中使用此令牌 以便向已添加为好友的用户发送通知 然而 推送设备令牌不起作用 因为用户未经授权 授权后我无法保存它 因为令牌是在安装应用程序时生成的 private static fi
  • 设置 JAVA_HOME 变量时出现问题

    所以我刚刚下载了 Android Studio 并尝试设置 JAVA HOME 变量以便我可以运行它 我使用的是 Windows 8 并按照我找到的所有说明进行操作 但无济于事 转到高级系统设置 gt 环境变量 然后使用包含我的 jre7
  • 如果没有按钮,Espresso 不会记录任何意图

    我正在尝试编写一个测试来验证使用浓缩咖啡启动的意图 问题是有意的 不记录任何意图 我有这个测试 Test public void shoulddosomething startActivity intended hasComponent h
  • Android 中的垂直(旋转)标签

    我需要两种在 Android 中显示垂直标签的方法 水平标签逆时针旋转 90 度 字母在侧面 带有字母的水平标签 如商店招牌 我是否需要为这两种情况 一种情况 开发自定义小部件 我可以使 TextView 以这种方式呈现吗 如果我需要完全自
  • 可以使用drawable-mdpi-fr、drawable-hdpi-fr、drawable-ldpi-fr进行不同分辨率的本地化

    我想对不同的本地化使用不同的图像 但是 我有所有分辨率和所有语言的图像 有什么办法可以做到这一点吗 是的 这是可能的 可绘制 de rDE ldpi 可绘制 de rDE mdpi 核实

随机推荐

  • C# 中的 HttpClient 请求有时会失败

    我的 C Windows 应用程序中有类似的代码 public async Task
  • GroupBy 和 Select 扩展方法帮助

    我正在尝试使用以下代码对几个字段进行 GroupBy var cars tmp Select a gt new a Make a Model a Year cars cars Distinct OrderBy a gt a Make The
  • 从 RabbitMQ 队列检索消息

    我希望将 RabbitMQ 实现到我的 PHP 应用程序中 并使用 php amqp 扩展 我唯一的问题是 如何在 PHP 中轻松查询以返回队列的内容 php amqp 似乎不允许我这样做 如果我错了 请在这里帮助我 James 你能在ra
  • Spark on Yarn 容器故障

    供参考 我通过在 hadoop share hadoop common 中添加 Netty 4 1 17 解决了这个问题 无论我尝试运行什么jar 包括来自https spark apache org docs latest running
  • 什么是 DynamicProxyGenAssembly2 程序集?

    我使用 Moq 进行单元测试 为了测试内部接口 我必须向 DynamicProxyGenAssembly2 程序集声明 InternalsVisibleTo 属性 我们运行模糊测试 这很有用 因为我们可以发现这种方法的一些模糊问题 由于 D
  • 如何同时启动两个进程然后等待两个进程完成?

    我想同时启动两个进程 并确保在继续其他步骤之前完成所有进程 你能帮我吗 我已经尝试过线程 它不能同时启动两个线程并等待完成 final CyclicBarrier gate new CyclicBarrier 3 Thread r2 new
  • 具有多个子项的 WPF UserControl

    我有一个用户控件 我希望能够拥有多个子控件 它已经有 StackPanel 作为它的子项 那么我做错了什么 最终 我希望该控件自动包含一些它自己的子元素 然后在使用时允许在其元素之一中放置更多的子元素 我试过MSDN 的如何覆盖逻辑树 ht
  • 设置新窗口的位置

    你好 我打开一个新窗口 a href Hilfe a 此时新窗口出现在左上角 我如何设置位置 以便它出现在其他地方 通过提供top and left window open Default aspx NewWindow top 100 le
  • 如何使用 FSWatch 在 Mac OSX 上查看文件更改?

    我正在尝试使用fswatch https github com alandipert fswatch将 Linux bash 脚本中的以下几行翻译为能够在 Mac OSX 上运行 inotifywait r m myfolder while
  • 对于 EBFE 的 ARM 等效项要发出哪些字节?

    在 x86 中 如果你想引发无限循环 你可以发出一个ebfe http ebfe org 基本上是跳转到当前指令 ARM 中相当于 EBFE 的是什么 那将是0xeafffffe 自身的无条件分支
  • SPARQL 1.1 蕴含机制和使用 FROM 子句的查询

    我目前正在记录 测试 SPARQL 1 1 蕴涵制度 并且建议反复指出 范围图与活动图在图上等效 但它没有指定活动图指的是什么 它是查询中使用的数据集吗 商店中所有图表的并集 作为确定这一点的测试 我得到了这张图的 URIed
  • 安卓配置改变了

    我有兴趣知道当 Android 设备旋转时 即配置更改时 哪些方法被覆盖 onSaveInstanceState onConfigurationChanged onRestoreInstanceState 类似的东西 对我来说 聆听与更改配
  • okhttp 与 HttpURLConnection 的关系

    很多人跟我说 HttpURLConnection 是从 android 4 4 开始基于 okhttp 的 但是当我深入研究okhttp的代码时 OkHttpURLConnection是从HttpURLConnection扩展的子类 那么
  • Java反思:类字段和方法的顺序是否标准化?

    在 Java 类上使用反射来访问所有字段 方法等 这些元素是否有标准化的顺序 在某些标准中指定 当然 我could凭经验检查 但我需要知道它是否总是 相同 EDIT 我等待问题 我需要订单做什么 长话短说 我有 JAXB 注释的类 并且不想
  • 在特定条件下获取行以交换表

    我目前有一个父表 CREATE TABLE members member id SERIAL NOT NULL UNIQUE PRIMARY KEY first name varchar 20 last name varchar 20 ad
  • 检测显示器是否关闭

    我有一个信息亭类型的应用程序 如果液晶电视关闭 我需要收到通知 以便我可以惩罚某人 我正在运行带有 nVidia 显卡和 nVidia 驱动程序的 Ubuntu 10 10 电视通过 HDMI 插入 我看过了nvidia settings
  • Visual Studio Code 中的 JSON 文件错误:预期逗号 json(514)

    我在使用 Visual Studio Code 时遇到了一个奇怪的问题 我的以下 JSON 文件有问题 attribute numeroConta operator value 0030152201 问题被指责为 值 在第二个数字零 问题如
  • OnClientClick 不适用于 asp.net LinkBut​​ton

    我有一个asp netlinkbutton 其中包含OnClientClick属性 但是函数内OnClientClick永远不会被调用 它直接跳转到OnClick功能 以下是我使用 LinkBut ton 的两种方式
  • CSS3 Border-Radius 的一个边框颜色不同,正在渗色

    我有一个使用边框半径的带有圆角的流体宽度 div 以及 div 一侧颜色不同的大边框 当浏览器窗口足够小时 边框都会按其应有的方式运行 然而 当我放大窗口尺寸时 我开始看到 div 中心的颜色渗出 我想知道是否有人知道可能的解决方案 div
  • Android 以编程方式安装 apk 错误 - 包解析错误

    我在我的页面上创建一个 Edittext 以允许用户通过下载 apk 并安装来更新应用程序 我正在使用 loojp 库来处理异步任务 我的活动代码 f0textupdate setOnClickListener new View OnCli