Android启动另一个应用

来源:互联网 发布:淘宝怎么买医疗器械 编辑:程序博客网 时间:2024/05/16 18:56

1、知道了另一个应用的包名和MainActivity的名字:

Intent intent = new Intent();ComponentName componentName = new ComponentName(packageName,className);intent.setAction(Intent.ACTION_MAIN);intent.addCategory(Intent.CATEGORY_LAUNCHER);intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);intent.setComponent(componentName);startActivity(intent);

2、不知道应用程序启动的Activity的类名,只知道包名,可以通过ResolveInfo类来获取启动的Acitivty的类名:

    private void openApp(String packageName) {        PackageInfo pi = null;        try {            pi = getPackageManager().getPackageInfo(packageName, 0);        } catch (NameNotFoundException e) {            e.printStackTrace();        }        Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null);        resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);        try {            resolveIntent.setPackage(pi.packageName);        } catch (NullPointerException e) {            // TODO: 未获取到相应包名        }        List<ResolveInfo> apps = getPackageManager().queryIntentActivities(                resolveIntent, 0);        ResolveInfo ri = apps.iterator().next();        if (ri != null) {            String appPackageName = ri.activityInfo.packageName;            String className = ri.activityInfo.name;            Intent intent = new Intent(Intent.ACTION_MAIN);            intent.addCategory(Intent.CATEGORY_LAUNCHER);            ComponentName cn = new ComponentName(appPackageName, className);            intent.setComponent(cn);            startActivity(intent);        }    }
1 0