Android启动另一个应用

 

1、如果一个应用中只有一个启动Activity可用以下方式启动

Intent intent = mView.getPackageManager().getLaunchIntentForPackage(aInfo.getPkgName());
  if (intent != null) {
  startActivity(intent);


2、如果一个应用中有多个启动Activity则要用下面的方式来启动

首先获取应用的包中所有的启动Activity

 

Intent intent1 = new Intent(Intent.ACTION_MAIN);
intent1.addCategory(Intent.CATEGORY_LAUNCHER);
intent1.setPackage(aInfo.getPkgName());
List<ResolveInfo> list = mView.getPackageManager().queryIntentActivities(intent1, PackageManager.GET_ACTIVITIES);


应为它们的包可能会相同所以判断它的应用名来区分到底启动哪个Activity

for (ResolveInfo resolveInfo : list) {
    if (aInfo.getAppLabel().equals(resolveInfo.loadLabel(mView.getPackageManager()).toString())) {
        startNewActivity(mView, resolveInfo, aInfo.getPkgName());
    }
}

 

private void startNewActivity(Context context, ResolveInfo info, String pkgName)
    {
        Intent intent = new Intent(Intent.ACTION_MAIN);
        intent.addCategory(Intent.CATEGORY_LAUNCHER);
        ComponentName cn = new ComponentName(pkgName, info.activityInfo.name);
        intent.setComponent(cn);
        context.startActivity(intent);
    }

 

附:获取android系统中所有应用

 

public List<AppInfo> getAllApps()
    {
        List<AppInfo> appInfos = new ArrayList<AppInfo>();
        List<PackageInfo> packages = mPkgManager
                .getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES);
        for (PackageInfo pkginfo : packages) {
            String pkgName = pkginfo.packageName;
            Intent intent1 = new Intent(Intent.ACTION_MAIN); 
            intent1.addCategory(Intent.CATEGORY_LAUNCHER);
            intent1.setPackage(pkgName);
            List<ResolveInfo> list = mPkgManager.queryIntentActivities(intent1, PackageManager.GET_ACTIVITIES);
            for (ResolveInfo resolveInfo: list) {
                String appLabel = resolveInfo.loadLabel(mPkgManager).toString();
                Drawable drawable = getAppIcon(resolveInfo);
                AppInfo info = new AppInfo(drawable, appLabel, pkgName);
                appInfos.add(info);
            }
        }
        Log.d(TAG, "all app sizes---:" + appInfos.size());
        return appInfos;
    }



 AppInfo为自定义类包含了包名、应用名,图标

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值