android - 获取已安装应用程序的列表,很简单。但如何启动其中之一呢?

标签 android android-intent android-launcher

我的第一个应用程序只是一种我想改进的启动器。 该启动器将启动用户已安装的自定义主页。

这就像应用程序“Home Switcher”,但我想自己做。

所以我的第一个目标是获取所有“家庭”应用程序列表:这非常简单,代码就在那里:

Intent mainIntent = new Intent(Intent.ACTION_MAIN, null); 
pm=getBaseContext().getPackageManager();
mainIntent.addCategory(Intent.CATEGORY_HOME); 
List<ResolveInfo> list = pm.queryIntentActivities(mainIntent,0);

现在我想在 ListView 中执行此操作。我的第一个问题是获取图标:我失败了​​,但这不是我的主要问题(如果你能帮助我,我会很高兴)

我成功制作了一个包含已安装主页的所有名称的 ListView :

for(...){
    map = new HashMap<String, String>(); 
    map.put("titre",info.activityInfo.applicationInfo.loadLabel( pm ).toString());
    map.put("pck",info.activityInfo.packageName);
    listItem.add(map);
}
    SimpleAdapter homeAdapter = new SimpleAdapter (this.getBaseContext(), listItem, R.layout.row,
    new String[] {"img", "titre"}, new int[] {R.id.img, R.id.titre});
    myListView.setAdapter(homeAdapter);

现在,当我点击一个主页时,我想启动该主页,所以我所做的是:

protected void onListItemClick(ListView l, View v, int position, long id) {
 super.onListItemClick(l, v, position, id);

 HashMap<String, String> map = (HashMap<String, String>) myListView.getItemAtPosition(position);
 Intent myIntent = new Intent();
 myIntent.setPackage(map.get("pck"));
 startActivity(myIntent);  

}

因此,出现一个框并询问我:

使用以下方法完成操作: LauncherPro - 或 Sense - 或 ADW 瓦拉珀画廊

我认为我已经接近我想做的事情了,但是,我认为我错过了一些东西,不是吗?

最佳答案

Here is a sample project实现启动器风格的 Activity 。

关于android - 获取已安装应用程序的列表,很简单。但如何启动其中之一呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3293253/

相关文章:

android - 在android中实现REST web服务的代码问题

java - 创建 map v2 扩展 fragment 时出错

java - 我的 fragment Activity 内的按钮不起作用

android - 如何在自定义 Android 主屏幕中添加默认小部件?

java - 使用普通应用程序作为 Android 启动器

java - DataSnapshot.getValue 无法解析类型 T

java - 在 DDMS (Android) 中更改文件权限

Android:小部件 onReceive() 未被调用

java - 如何使用我的方案隐式打开我的应用程序?

icons - Android oreo 在白色圆形内显示图标