PackageUtil.java 文件源码

java
阅读 37 收藏 0 点赞 0 评论 0

项目:AndroidBasicLibs 作者:
/**
 * 启动应用
 */
public static boolean startAppByPackageName(Context context, String packageName, Map<String, String> param) {
    PackageInfo pi = null;
    try {
        pi = context.getPackageManager().getPackageInfo(packageName, 0);
        Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null);
        resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.DONUT) {
            resolveIntent.setPackage(pi.packageName);
        }

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

        ResolveInfo ri = apps.iterator().next();
        if (ri != null) {
            String packageName1 = ri.activityInfo.packageName;
            String className = ri.activityInfo.name;

            Intent intent = new Intent(Intent.ACTION_MAIN);
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            intent.addCategory(Intent.CATEGORY_LAUNCHER);

            ComponentName cn = new ComponentName(packageName1, className);

            intent.setComponent(cn);
            if (param != null) {
                for (Map.Entry<String, String> en : param.entrySet()) {
                    intent.putExtra(en.getKey(), en.getValue());
                }
            }
            context.startActivity(intent);
            return true;
        }
    } catch (Exception e) {
        e.printStackTrace();
        ViseLog.e("启动失败");
    }
    return false;
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号