0

我想知道我是否可以通过在我的应用程序中单击来运行多个应用程序,我的意思是我们公司有几个应用程序,对于一个进程,用户需要从 2 个不同的应用程序中添加信息。我想知道是否可以创建一个快捷方式来将这两个应用程序作为单独的应用程序启动?

我的意思是每个人都有标志“Intent.FLAG_ACTIVITY_NEW_TASK”

让我们分配一些“昵称”开瓶器 = 我正在使用的应用程序。我想在哪里添加打开 2 个应用程序 i1 = 应用程序 1 i2 = 应用程序 2 的快捷方式

我使用的示例代码是:

Intent i1 = getAppIntent(someValueToGetTheIntent);
if (i1 != null){
    i1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    i1.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
    startActivity(i1);
}

Intent i2 = getAppIntent(someOtherValueToGetTheIntent);
if (i2 != null){
    i2.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    i2.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
    startActivity(i2);
}

当我这样做时,i2 应用程序(意图)位于顶部。如果我尝试导航到 i1(在打开的应用程序菜单中)以切换到另一个应用程序,它不存在,我可以看到 opener 和 i2 但不是 i1。如果我单击后退按钮,则 i1 会启动,然后我会看到所有这些。但我希望他们从一开始就在那里。

我需要 3 打开并允许用户在它们之间导航的原因是因为 3 包含与应用程序交互所需的不同信息。eje opener有一个表格要填写学校和学生信息,i1有学校信息,i2有学生信息。

我知道最好的方法是整合应用程序,但目前还不可能,所以这对用户来说是一个很大的帮助。

因此,我想知道如何将多个应用程序作为新任务启动,以便它们两个应用程序都位于应用程序菜单上,并且用户可以在它们之间切换。

编辑

我注意到获取 Intent 数组并触发所有应用程序的 startActivities 方法,这是我需要的,但仍然如此。它提到:“将在用户第一次访问它们时创建(由于从顶部的活动中按下)。” 我想知道是否可以避免这种后退按钮行为。

所以我可以在用户必须按下后退之前“创建”它们。

4

3 回答 3

1

是的,你可以,我也建议在异步线程上运行它们。这是我用来在我的 android 应用程序中运行异步任务的 ksoap2 库的 jar。

https://code.google.com/p/ksoap2-android/source/browse/m2-repo/com/google/code/ksoap2-android/ksoap2-android-assembly/#ksoap2-android-assembly%2F2.5.5

Lmk 如果您需要更多帮助。

于 2013-10-31T20:53:56.157 回答
1

Android 一次只允许一个活动处于活动状态。当一个新的活动开始时,当前活动被保存到“活动堆栈”以供以后使用。如果垃圾收集器确定这样做是安全的,系统最终会清理活动堆栈。

做你想做的事情的正确方法是为你的应用程序创建一个自定义意图,以便在它们之间传递。这是在不相关的应用程序之间传递数据的 Android 方式,也是处理您的问题的正确方式。

如果您谈论的是两个活动,而不是两个应用程序,您可以使用startActivityForResult(). 这允许您从活动返回结果,而不是在意图中明确地传递它。这可能会更好,因为您不必总是以这种方式自己序列化它。

于 2013-10-31T23:49:34.920 回答
0

感谢大家的帮助,我知道最好的方法是使用android已经合并的startActivities,并让用户知道需要使用后退按钮在活动之间导航。目前这不是我的选择。

我最终使用了这样的计时器:

lunchAppTimer.removeCallbacks(runnable);
lunchAppTimer.postDelayed(runnable, 2000);
Handler lunchAppTimer = new Handler();
private Runnable runnable = new Runnable() {
    @Override
    public void run() {
        new LaunchApplication(mLIntent).execute();
    }
};

在 LaunchApplication 我有我的 startActivity,这是通过我在任何给定时刻需要的所有活动进行迭代的。

同样,这可能不是最好的方法,但在我所做的搜索中,我找不到更好的解决方案来运行 2 个或更多应用程序。

于 2013-11-02T02:13:24.070 回答