我正在编写我的第一个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)不是我想要的正确方法,但不确定如何更改或是否有更根本的变化需要。
非常感谢您的帮助。
答案 0 :(得分:0)
您应该通过一次一个地调用它们,从顶级MainActivity
顺序运行每个应用。
以下是:
MainActivity
中设置一个计数器,以指明您是哪个应用
目前正在调用。startActivityForResult()
代替startActivity()
开始
你的申请。这将导致执行返回
每个应用完成后MainActivity.onActivityResult()
。requestCode
startActivityForResult()
将返回
onActivityResult()
,因此您将知道哪个应用程序已完成。
因此,MainActivity
可以递增计数器并启动计数器
onActivityResult()
中的下一个申请。<强>限制强>:
MainActivity
应用程序完成这些步骤满足了这一要求。Timer
您的MainActivity
作为监视生成的应用程序的监视器。使用方法
这里描述的是在时间用完时停止生成的应用程序:
Finish an activity from another activity。这就是全部。祝你好运!