你如何获得一个Android应用程序来启动多个应用程序然后返回到初始应用程序?

时间:2013-04-01 17:15:07

标签: java android

我正在编写我的第一个Android应用程序,所以我会尽力清晰准确。我可以看到一些类似的问题,但没有一个似乎完全回答它也许它无法完成但是这里有:

我的主要活动是存储数据,其中包括用户选择启动的设备上的应用列表。单击主活动屏幕上的按钮,我希望设备依次启动每个选定的应用程序,然后(理想情况下)将用户返回到我编写的主要活动。我还想在运行每个应用程序时定义一些限制 - 例如,每个应用程序运行30秒或直到应用程序停止使用互联网,无论哪个最早。

我不相信将所有这些链接到按钮点击都有任何问题,也没有任何问题在所有选定的应用程序中循环。我真正需要的是启动每个应用程序然后从中调用/移动到下一个应用程序的代码(理想情况是在30秒之后或应用程序停止使用互联网时)。希望下面的代码清楚地表明我在寻找TODO的帮助。有谁知道这是否可能,如果是我怎么能完成它?

public class MainActivity extends Activity {
... //some code up here

//when the Run Apps button is clicked the onClick will run all of the selected apps using this Method:
public void RunApps(View view) {

    //run through the list of Apps and run the ones that are selected
    for (App application : list) {
        if (application.isSelected()) {

               /* TODO code that is meant to run the selected app and return to the main 
                * activity after say 30 seconds or when the app is done using the internet.
                * As a starter I have the below but this is crashing and even if it did run
                * I believe that it would not return me to the original main activity:
                */
                Intent i = new Intent(Intent.ACTION_MAIN);
                PackageManager manager = getPackageManager();
                i = manager.getLaunchIntentForPackage(application.getPackageName());
                i.addCategory(Intent.CATEGORY_LAUNCHER);
                startActivity(i); 
        }
    }
};

...//some more code here
}

只是几个注释 - App类在别处定义,包括包名称以及用户是否已选择应用程序。列表是应用列表。

我认为ACTION_MAIN和CATEGORY_LAUNCHER值可能不是最好用的,也许startActivity(i)不是我想要的正确方法,但不确定如何更改或是否有更根本的变化需要。

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您应该通过一次一个地调用它们,从顶级MainActivity顺序运行每个应用。

以下是

  1. MainActivity中设置一个计数器,以指明您是哪个应用 目前正在调用。
  2. 使用startActivityForResult()代替startActivity()开始 你的申请。这将导致执行返回 每个应用完成后MainActivity.onActivityResult()
  3. requestCode startActivityForResult()将返回 onActivityResult(),因此您将知道哪个应用程序已完成。 因此,MainActivity可以递增计数器并启动计数器 onActivityResult()中的下一个申请。
  4. <强>限制

    • 您的要求之一是在每次之后返回MainActivity 应用程序完成这些步骤满足了这一要求。
    • 另一个要求是在所有的之后返回到'MainActivity 应用已完成。这些步骤也满足了这一要求。 你知道什么时候结束了 最终的应用程序,因为你的柜台的价值。
    • 最终要求是将每个应用的持续时间限制为30 秒。这是一个更难的问题。您将使用Timer 您的MainActivity作为监视生成的应用程序的监视器。使用方法 这里描述的是在时间用完时停止生成的应用程序: Finish an activity from another activity
      警告:在尝试外部停止应用之前,先让其他所有工作正常工作。

    这就是全部。祝你好运!