android系统中,运行指定的应用程序
2011-08-07 20:28
197 查看
在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");
}
}
例如有一个像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");
}
}
相关文章推荐
- Android应用程序框架层和系统运行库层日志系统源代码分析
- Android应用程序框架层和系统运行库层日志系统源代码分析
- android平台下运行dx.bat,提示“系统找不到指定路径”
- Android应用程序框架层和系统运行库层日志系统源代码分析
- android 怎样内置/预置/预编译文件(运行程序,应用程序,apk, jar, lib 等随意文件)到系统中
- Android应用程序框架层和系统运行库层日志系统源代码分析
- Android源码解析之应用程序框架层和系统运行库层日志系统
- Android应用程序框架层和系统运行库层日志系统源代码分析
- Android应用程序框架层和系统运行库层日志系统源代码分析
- Android应用程序框架层和系统运行库层日志系统源代码分析
- Android应用程序框架层和系统运行库层日志系统源代码分析
- Android应用程序框架层和系统运行库层日志系统源代码分析
- Android应用程序框架层和系统运行库层日志系统源代码分析
- Android应用程序框架层和系统运行库层日志系统源代码分析
- Android应用程序框架层和系统运行库层日志系统源代码分析
- Android应用程序框架层和系统运行库层日志系统源代码分析
- Android应用程序框架层和系统运行库层日志系统源代码分析
- Android应用程序框架层和系统运行库层日志系统源代码分析
- 交叉编译用于android系统里的C/C++应用程序/库文件(其实就是运行于linux之上的应用程序)。
- Android应用程序框架层和系统运行库层日志系统源代码分析