美文网首页
Androidの系统之App1启动App2

Androidの系统之App1启动App2

作者: 耑意儿 | 来源:发表于2019-08-09 12:01 被阅读0次
目录:
1、查看APP中所有应用的包名
2、查询可跳转的Activity们
3、启动另一个App
Android小仙

参考资料 : 关于PackageManager的用法详解

1 查看APP中所有应用的包名
    1. 获取PackageManager
PackageManager pm = this.getPackageManager();
    1. 获取所有的ApplicationInfo
List<ApplicationInfo> appList = pm
                .getInstalledApplications(PackageManager.GET_UNINSTALLED_PACKAGES);
    1. 查看包名ApplicationInfo.packageName
    1. ApplicationInfo中的属性
      类中有150行的代码
      ApplicationInfoandroid.content.pm包下的一个实体类,用于封装应用的信息
2、查询可跳转的Activity们
Intent intent = new Intent(Intent.ACTION_MAIN);
        intent.addCategory(Intent.CATEGORY_LAUNCHER);
        intent.setFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED|Intent.FLAG_ACTIVITY_NEW_TASK);
        List<ResolveInfo> list = pm.queryIntentActivities(intent,
                PackageManager.GET_ACTIVITIES);
        for (int i = 0; i < list.size(); i++) {
            ResolveInfo info = list.get(i);
            Log.d("MainActivity","activityName:"+ info.activityInfo.name);
        }
3、通过包名启动另一个APP的方法
    private static Intent getAppOpenIntentByPackageName(Context context,String packageName){
        //Activity完整名
        String mainAct = null;
        //根据包名寻找
        PackageManager pkgMag = context.getPackageManager();
        Intent intent = new Intent(Intent.ACTION_MAIN);
        intent.addCategory(Intent.CATEGORY_LAUNCHER);
        intent.setFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED|Intent.FLAG_ACTIVITY_NEW_TASK);

        List<ResolveInfo> list = pkgMag.queryIntentActivities(intent,
                PackageManager.GET_ACTIVITIES);
        for (int i = 0; i < list.size(); i++) {
            ResolveInfo info = list.get(i);
            if (info.activityInfo.packageName.equals(packageName)) {
                mainAct = info.activityInfo.name;
                break;
            }
        }
        if (TextUtils.isEmpty(mainAct)) {
            return null;
        }
        intent.setComponent(new ComponentName(packageName, mainAct));
        return intent;
    }
4、PackageManager的作用
  • 安装,卸载应用
  • 查询permission相关信息
  • 查询Application相关信息(application,activity,receiver,service,provider及相应属性等)
  • 查询已安装应用
  • 增加,删除permission
  • 清除用户数据、缓存,代码段等

相关文章

网友评论

      本文标题:Androidの系统之App1启动App2

      本文链接:https://www.haomeiwen.com/subject/qnjcjctx.html