app启动其他应用

因开发需要内包一个app,所以要启动一个app,这种操作 如果知道包名和类名 其实很简单 只需要将包名内嵌即可(一般情况 我们都可以解压或者反接拿到) 

代码如下:

1
2
3
4
5
Intent intent = new Intent(Intent.ACTION_MAIN);  // 必须要设置这两项 不然找不到  
intent.addCategory(Intent.CATEGORY_LAUNCHER); <br>//设置包名 和类名
ComponentName mComponentName = new ComponentName("com.kukum.mynews", "com.kukum.android.SplashActivity");
intent.setComponent(mComponentName);
startActivity(intent);

   但是如果确实不知道类名 ,则需要先根据包名获取包信息 然后拿到启动类 进行跳转 代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// 创建一个该包名相同的类别CATEGORY_LAUNCHER的Intent
Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null);
resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);
resolveIntent.setPackage("com.kukum.mynews");
 
// 通过getPackageManager()的queryIntentActivities方法遍历 
List<ResolveInfo> resolveinfoList = getPackageManager()
        .queryIntentActivities(resolveIntent, 0);
// 因为有category 和action 关联 所以启动类只有一个 如果有的话 就是启动类
ResolveInfo resolveinfo = resolveinfoList.iterator().next();
if (resolveinfo != null) {
    String className = resolveinfo.activityInfo.name;
    Intent intent = new Intent(Intent.ACTION_MAIN);
    intent.addCategory(Intent.CATEGORY_LAUNCHER);
    ComponentName mComponentName = new ComponentName("com.kukum.mynews", className);
    intent.setComponent(mComponentName);
    startActivity(intent);
}

  搞定

  

 

posted on   成己成物kukum  阅读(942)  评论(0编辑  收藏  举报

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示