我目前正在製作一個Android啓動器,並且花了很多時間在Stackoverflow上關於如何去做不同的事情。然而,我從我自己的開放應用程序中遇到了麻煩。我使用的代碼是從這個主題的其他問題拼湊在一起的。我現在有一個安裝的應用程序列表,但點擊後,我的應用程序重新打開。我想我以錯誤的方式使用錯誤的意圖,但不知道如何解決問題。所以我的問題是: 什麼是打開選定的應用程序更好的方式?以下是使用的代碼。注意:我是編碼的初學者。是否有可能以我嘗試的方式啓動應用程序?
PackageManager pm = this.getPackageManager();
Intent intent = new Intent(Intent.ACTION_MAIN, null);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
List <String> myList = new ArrayList <String>();
ArrayList <ResolveInfo> list = (ArrayList <ResolveInfo>) pm.queryIntentActivities(intent, PackageManager.PERMISSION_GRANTED);
for (ResolveInfo rInfo: list) {
System.out.println("Installed Applications " + rInfo.activityInfo.applicationInfo.loadIcon(pm).toString() + rInfo.activityInfo.applicationInfo.loadLabel(pm).toString());
myList.add(rInfo.activityInfo.applicationInfo.loadLabel(pm).toString());
}
ListView lists = (ListView) findViewById(R.id.content);
ArrayAdapter <String> aa = new ArrayAdapter <String> (this, android.R.layout.simple_list_item_1, myList);
lists.setAdapter(aa);
lists.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView <? > parent, View view, int position, long id) {
Intent i = new Intent("android.intent.action.MAIN");
i.addCategory("android.intent.category.LAUNCHER");
PackageManager pm = getPackageManager();
i = pm.getLaunchIntentForPackage(getPackageName());
startActivity(i);
}
});
'getPackageName()'方法返回當前'Activity'的包名,這就是爲什麼'getLaunchIntentForPackage(getPackageName())'只是重新啓動你自己的應用程序。枚舉其他應用程序後,您需要獲取*他們的包名稱並使用單擊的列表項中的名稱。 – Squonk