一个显式的Intent用于活动列表

时间:2015-10-17 17:59:39

标签: android android-intent explicit-intent

当多个应用符合操作时,隐式意图会向用户显示应用列表。然后用户选择启动此应用程序。

但是,如果你有一个包名(或/和classname)列表,那么显式意图可能相同吗?像这样的东西(不是这样的,但这就是我想要的):

Intent i = new Intent().setClassName(ListofPackagenames, ListofClassnames)
startActivity(i);

使用ListofPackagenames(数组)包名和ListofClassnames列表和(数组)类名列表。 使用startActivity时,应该显示一个对话框,就像您想要启动隐式intent一样。

如果这是不可能的,那么我可以做一个costum对话。 那么只有一种方法,只能从packagename或classname获取appicon?

1 个答案:

答案 0 :(得分:1)

您可以使用PackageManager获取发布活动并使用EXTRA_INITIAL_INTENTS.创建选择器意图 类似的东西:

List<String> listofPackageNames=....
List<Intent> intentList=new ArrayList<Intent>();
PackageManager pm = getPackageManager();
for(String packageName:listofPackageNames){
    intentList.add(pm.getLaunchIntentForPackage(packageName));
}
Intent[] intents=new Intent[intentList.size()];
intents=intentList.toArray(intents);
Intent chooser=Intent.createChooser(intents[0],"Choose ...");
chooser.putExtra(Intent.EXTRA_INITIAL_INTENTS,Arrays.copyOfRange(intents,1,intents.length));
startActivity(chooser);