我有一个ListApp活动,它列出了所有已安装的应用程序,我在这里试图做的是,当用户从列表中选择一个应用程序时,它应该会获得关于所选应用程序的意图/信息,现在当用户单击按钮1时,它会打开之前选择的应用程序(借助之前检索到的意图)。
ListApp活动:
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
switch (arg0.getId()){
case R.id.button1:
//startActivity(app.intent);
//should start app with the help of info received by selecting app from the list
break;
}
@Override
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
//ApplicationInfo app = (ApplicationInfo) parent.getItemAtPosition(position);
//startActivity(app.intent);
//instead of launching app, I would like to get the info about the selected app & use it(start app) when clicking button1
}
应用程序信息
class ApplicationInfo {
CharSequence title;
Intent intent;
Drawable icon;
boolean filtered;
final void setActivity(ComponentName className, int launchFlags) {
intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
intent.setComponent(className);
intent.setFlags(launchFlags);
}
}
感谢大家:)
如果您知道应用程序的包名称,请从列表中的索引中获取活动信息。
List<ResolveInfo> rInfo = getPackageManager().queryIntentActivities(new Intent(Intent.ACTION_MAIN),MATCH_DEFAULT_ONLY);
for(ResolveInfo resolveInfo:rInfo){
if(resolveInfo.activityInfo.packageName.equals("package")){
根据解析信息设置组件。
ComponentName chosenName = new ComponentName(
resolveInfo.activityInfo.packageName,
resolveInfo.activityInfo.name);
break;
}
}
final Intent intent = new Intent(Intent.ACTION_MAIN, null);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
intent.setComponent(chosenName);
startActivity(intent);
如上所述设置组件。
public ComponentName(String pkg,String cls)
添加在API 1级创建一个新的组件标识符。
参数pkg组件所在的软件包的名称。不能为null。cls pkg中的类的名称实现该组件。不能为null。