启动应用程序的Activty多种方式

启动应用程序的Activity总共有三种方式,如下:

1>通过包名得到将启动应用的入口Activity,然后给intent附上相应的属性即可.

 示例代码

public static void startApp(final Context context, final String pkgname) {

PackageInfo pi = null;

try {

           pi = context.getPackageManager().getPackageInfo(pkgname, 0);

} catch (NameNotFoundException e) {

           e.printStackTrace();

}

if (pi == null) {

        return;

}

Intent resolveIntent = new Intent(Intent.ACTION_MAIN);

resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);

resolveIntent.setPackage(pi.packageName);

List<ResolveInfo> apps = context.getPackageManager().queryIntentActivities(resolveIntent, 0);

ResolveInfo ri = apps.iterator().next();

if (ri != null) {

        String className = ri.activityInfo.name;

        Intent intent = new Intent(Intent.ACTION_MAIN);

        intent.setPackage(pkgname);

intent.addCategory(Intent.CATEGORY_LAUNCHER);

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK

| Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);

ComponentName cn = new ComponentName(pkgname, className);

intent.addFlags(0x10000000);

intent.setComponent(cn);

context.startActivity(intent);

}

}

 

2>指定包名和想要入口的activity名

 示例代码:

public static void startApp(final Context context, final String pkgname,final String activityName) {
    ComponentName componetName = new ComponentName(pkgname,activityName);
    try {
          Intent intent = new Intent();
          intent.setComponent(componetName);
          context.startActivity(intent);
       } catch (Exception e){
       }
}

3>指定启动的Action

public static void startAppAction(final Context context,final String actionValue) {
      Intent intent = new Intent(actionValue);
      context.startActivity(intent);
}

 

原文地址:https://www.cnblogs.com/lianghe01/p/4288619.html