我目前正在制作一个 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);
}
});