gpt4 book ai didi

Android 包安装程序 - 如何同时获取 "Open"和 "Done"以及 Activity 结果?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:40:51 24 4
gpt4 key购买 nike

我的 Android 应用程序有一个升级到更新版本的选项,更新版本的 APK 我在 sdcard 的路径下保持可用。单击升级选项后,我将调用以下方法。

    public static void launchInstaller(Activity act, String apkPath)
{
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(new File(apkPath)), "application/vnd.android.package-archive");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
act.startActivityForResult(intent, 0);
}

我包含 FLAG_ACTIVITY_NEW_TASK 的原因是,在升级之后,我想要“打开”和“完成”选项,如果我不使用此标志则不会显示这些选项。

当上面的代码启动包安装程序时,它有两个选项 OK 和 Cancel,当用户按下 Cancel 时,我想知道用户取消了它。但我无法知道,因为过早调用了 onActivityResult。在阅读以下帖子后,我明白了为什么会发生这种情况。

Android - startActivityForResult immediately triggering onActivityResult

onActivityResult() called prematurely

他们要求我确保我用来启动 Activity 的 Intent 没有设置 FLAG_ACTIVITY_NEW_TASK。看这里:

http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_NEW_TASK

In particular note: "This flag can not be used when the caller is requesting a result from the activity being launched."

If the activity is being launched as part of a new task then Android will immediately call the onActivityResult() with RESULT_CANCELED because an activity in one task can't return results to another task, only activities in the same task can do so.

但在我的例子中,我无法删除 FLAG_ACTIVITY_NEW_TASK,否则我将无法在成功升级时获得“打开”和“完成”选项。

有人遇到过类似的问题吗?请帮助我,因为它让我抓狂。

最佳答案

您应该使用包添加的广播 Intent 。创建广播接收器监听 package added.如果添加的包等于你的包,用户确认安装否则关闭安装过程。如果你问android可以返回什么样的extras,android返回EXTRA_UID about package。 PackageManager 的方法将 uid 转换为包。(getPackagesForUid(int uid) 返回字符串数组,但它通常返回数组中的一项,通常数组长度通常等于 1。

关于Android 包安装程序 - 如何同时获取 "Open"和 "Done"以及 Activity 结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19005213/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com