在android开发中,如何才能运行选定的应用程序。
例如有一个像settings中的应用程序列表,点击一个应用程序后,android将运行该程序?
本人正好在项目中实现了该功能,现与大家分享,代码如下:
private void runActivity() {
String packageName = applicationInfo.packageName;
Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null);
resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);
resolveIntent.setPackage(packageName);
List<ResolveInfo> apps = getPackageManager().queryIntentActivities(resolveIntent, PackageManager.GET_ACTIVITIES);
if(apps.size() == 0) {
Toast.makeText(this, "无法启动该应用", Toast.LENGTH_SHORT).show();
return;
}
ResolveInfo ri = apps.get(0);
if (ri != null) {
String className = ri.activityInfo.name;
ComponentName cn = new ComponentName(packageName, className);
Intent intent = new Intent();
intent.setComponent(cn);
startActivity(intent);
}
}
applicationInfo很重要,可将ApplicationInfo对象设置为全局变量,点击一个item后对其进行赋值,如下:
private ApplicationInfo applicationInfo ;
public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
applicationInfo = packageInfos.get(position).applicationInfo;
boolean flag = false;
if((applicationInfo.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0) {
// Updated system app
flag = true;
} else if((applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) {
// Non-system app
flag = true;
}
if(flag) {
Log.e("sky", "is not system app");
}
}