问题标签 [packageinstaller]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
323 浏览

android - 使用 PackageInstaller API 提示 apk 安装在 android 10 中不起作用

我的应用从服务器下载一个 APK。对于低于 Android 10 的版本,在 apk 下载后,安装提示按预期工作,但在 Android 10 中,使用 PackageInstaller API 下载 apk,如此链接中所述安装更新同一应用的 apk 在 Android 10 上失败;java.lang.SecurityException:文件仍然打开 ,但安装提示不起作用,用户必须通过单击我不想要的 apk 从通知栏中手动安装应用程序。
同样在我的代码中,在下载 apk 后,我的 MainActivity 中的 onNewIntent() 中没有收到回调,这可能是没有出现 apk 安装提示的原因吗?
我使用了与上面链接中提到的相同的代码块。
任何帮助将不胜感激。

0 投票
0 回答
467 浏览

android - 为什么 Android PackageInstaller 失败?

我的 Android 活动/应用程序正在使用 DownloadManager 和 PackageInstaller 进行自我更新。我将在此处发布相关代码,但底线是文件下载成功但未安装,并且 LogCat 中没有有用的信息来帮助我找出原因。

如果我的代码有问题,我很想知道,但据我所知,我正在按照示例所说的方式做事。我已经尝试过设置和不设置 DeviceOwner,并且无论哪种方式都可以看到相同的行为。什么都没有发生,LogCat 中也没有任何内容表明出了什么问题。

我尝试连接会话回调方法,但我无法获得任何信息,因为我的 'sessionInfo' 始终为 NULL。这怎么可能呢?

下载部分已成功运行,因此我将在此处显示相关行。

File downloadFile = new File(getExternalFilesDir(null),"myapp-update.apk");

该 apk 是在 Android Studio 中使用“Build -> Build Bundle(s) -> APK(s) -> Build APK(s)”构建的,它会输出一个“调试”APK(就像我构建和部署到IDE 中的设备)。它是使用较新的 VersionID 和 VersionName 构建的,然后上传到我的文件服务器。我的 Android 应用程序使用 DownloadManager 下载它,并且它正在运行。

这是下载 APK 后发生的情况。

这是下载后安装APK的方法。

我用于 APK 安装的自定义广播接收器如下。它永远不会被调用,也不会安装下载的 APK。我可以说是因为什么都没发生,但即使发生了,我也会显示版本号并且它不会改变。

以下是我的 AndroidManifest.xml 文件中的相关位。

唯一的其他代码与 DeviceOwner 相关,但无论设备所有者如何,这种方法都应该有效。唯一的区别是更新是静默更新还是需要用户交互。

这是来自 AndroidManifest.xml 的设备所有者资料。

这是 device_admin.xml 文件。

非常感谢您提供的任何帮助。

0 投票
0 回答
276 浏览

android - 为什么 PackageInstaller.getSessionInfo 结果不一致?

下面是我的代码,它使用 PackageInstaller 安装我从服务器下载的 APK。

我得到的输出表明创建了正确的 SessionID,但在“getSessionInfo()”之后立即返回 null。根据 Android 官方文档,这表明有问题的 SessionID 不存在。但是,当我在相关会话的回调处理程序中时,这怎么可能呢?请注意,所有回调都会发生这种情况,而不仅仅是 Create。

这是奇怪的部分 - sessionInfo 时不时地不为空,并且会打印所需的数据。

0 投票
1 回答
226 浏览

android - 如何使用新的 PackageInstaller api 卸载 android 应用程序?

API 级别 29 已弃用旧的卸载 android 应用程序的方法ACTION_UNINSTALL_PACKAGE。现在建议PackageInstaller.uninstall(packageName: String, statusReceiver: IntentSender)改用。到目前为止,这是一个想法:

我无法弄清楚如何提供IntentSender. 我试图在当前活动中创建一个意图,但是这些代码所做的只是重新创建活动。请问有什么想法吗?谢谢

0 投票
1 回答
721 浏览

android - Android PackageInstaller 安装结果

我使用 PackageInstaller 和 PackageInstaller.Session 从我的应用程序安装应用程序。我想在安装失败时在我的应用程序中显示一条消息(例如,在 apk 签名错误的情况下)。如何获得安装会话的结果?

0 投票
1 回答
79 浏览

java - 无法让 PackageInstaller.uninstall 工作

我的应用程序具有设备管理员权限,但我无法使用 packageinstaller 卸载该应用程序。当我的代码运行时,它还没有抛出任何错误,我试图卸载的应用程序仍然存在。知道有什么问题吗?或者如何更深入地调查这个问题?

谢谢

0 投票
1 回答
81 浏览

android - 有什么方法可以使用低于 API 级别 21 的 PackageInstaller?

我的应用程序 minSdkVersion 为 19,应用程序使用以下代码安装 3rd 方应用程序,

我在清单文件中添加了权限,

上面的代码在 android 版本 9 之前运行良好,但在 Android 10 中无法运行并且找不到日志。我浏览了一些文档,ACTION_VIEW 或 ACTION_INSTALL_PACKAGE 在 Android 10 上已弃用。PackageInstaller 是用于安装 3rd 方应用程序的新 API,但PackageInstaller是在 API 级别 21 中添加的。

有什么方法可以使用低于 API 级别 21 的 PackageInstaller?如何在 Android 10 中安装 3rd 方应用程序?

0 投票
1 回答
3142 浏览

python - 无法安装 Geopandas

无法在 python 3.7 中安装 geopandas。总是弹出这个错误:

问题

anaconda中的问题 请帮助!

0 投票
0 回答
405 浏览

apk - 安装和更新 apk - targetSdkVersion 29 (Android 10)

自从我更新targetSdkVersion到 29 后,我遇到了很多麻烦,这与下载 - 安装 - 更新我的应用程序有关。新版本的apk下载成功(因为我是通过手机的文件资源管理器找到的)但是我认为没有正确安装。一旦该过程完成,它看起来就像屏幕重新启动,因为它闪烁,但应用程序没有更新(我知道它是因为在主屏幕中显示版本)。我的代码是:

我的接收器:

}

和清单:

0 投票
2 回答
1132 浏览

android - PackageInstaller 完成(自我)更新后启动应用程序

PackageInstaller 成功(自我)更新应用程序后,应用程序关闭并且不再启动。

可能重复:Android PackageInstaller,更新后重新打开应用程序

情况非常相似,我先展示一些代码片段。

AndroidManifest.xml

我的 PackageInstaller 会话在 AsyncTask 中运行:

在此代码段的末尾,您可以看到要发送的 Intent 的设置。我尝试了很多变体,但没有一个奏效。例如:

我的接收者永远不会收到意图。

编辑:不知何故,我设法自动重新启动应用程序,但它在 1-3 秒后被杀死。在系统的logcat中发现如下错误。

我不确定这是否是原因。

EDIT2:现在我收到了意图,因此应用程序正在运行。现在的问题是它在后堆栈中。

我有一个启动器应用程序,可以重新启动主(更新)应用程序,但这对我来说听起来不是干净的代码。

编辑3:

我尝试了大卫的回答,但收到以下错误:

请注意,这是由 android 系统引发的,而不是由我的应用程序引发的。