android系统中,运行指定的应用程序

在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");
  }
 }

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值