美文网首页
Android-跳转第三方app重复启动问题

Android-跳转第三方app重复启动问题

作者: 方小钢 | 来源:发表于2017-05-02 23:28 被阅读2150次
    最近项目有个需求,在自己的软件中启动第三方的app,直接启动第三方的app是没有难度的,几行代码就搞定了。这样的话每次都会重新启动第三方应用。但是需求不能中断目标app原有的操作,第三方app原来在什么界面跳转过去就也应该是什么画面。
    一开始我把目标软件的主activity的LaunchMode设为“singleInstance”(目标app经常我们也是没法改动的)。启动时Flag设为“FLAG_ACTIVITY_SINGLE_TOP”。芮然每次都能跳转在目标界面,但是每次会出现目标app的启动引导画面。导致体验不好。
    后来我想到了桌面软件点击app的时候是不会重新打开一个软件或者出现引导页。我就去找了桌面启动app的代码,实现了所需的效果:
     Intent intent = new Intent();
     intent = getAppOpenIntentByPackageName(MainActivity.this,"目标软件package");
     startActivity(intent);
    
    
    public static Intent getAppOpenIntentByPackageName(Context context, String packageName){
        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;
    }
    
    目标主Activity的LaunchMode最好设为“singletop”

    相关文章

      网友评论

          本文标题:Android-跳转第三方app重复启动问题

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