我正在寫我的第一個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)不是我想要的正確方法,但我不確定需要如何更改或者是否有更基礎的方法需要更改。
非常感謝您的幫助。
謝謝你。我試圖實施大衛的建議,但它不是很有效。例如如果用戶選擇了一些應用程序來啓動(比如說瀏覽器就是其中之一併且是列表中的第一個),那麼當你啓動RunApps方法時,瀏覽器會打開並開始從網絡加載(這正是我想要的)。但是,它永遠不會返回到原始應用程序。我必須通過UI手動返回到原始應用程序。然後它會從所選列表中啓動另一個應用程序,但它又不會返回到我的應用程序。有任何想法嗎?我可以自動從瀏覽器和其他第三方應用程序返回嗎? – Soxford
我相信,一旦用戶按下「返回」,瀏覽器將返回到您的活動。我相信你可以保持瀏覽器退出後退堆棧,這樣當用戶最終退出你的活動時,它不會保留:'intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);'。最後,包括我自己在內的開發人員可以用一個大的「WebView」創建一個自定義活動,並用它來導航到網站,而不是原生的Android瀏覽器應用程序。也許你應該在用戶選擇導航到一個URL時使用這種機制。 –