zoukankan      html  css  js  c++  java
  • intent打开第三方应用

    有时候我们会有在自己的应用中进入另一个第三方应用的需求,首先要知道第三方应用的包名和主activity,很简单遍历一下所有的应用就能拿到了。

        private void go2App(String packageName) {
            if (!isAppInstalled(this, packageName)) {
                ToastUtil.showToast(this, "您没有安装此应用", Toast.LENGTH_LONG);
                return;
            }
            
            String mainAct = null;
            Intent intent = new Intent(Intent.ACTION_MAIN);
            intent.addCategory(Intent.CATEGORY_LAUNCHER);
    
            PackageManager manager = this.getPackageManager();
            List<ResolveInfo> list = manager.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)) {
                ToastUtil.showToast(this, "打开失败", Toast.LENGTH_LONG);
            }
    //        intent.setComponent(new ComponentName(packageName, mainAct));//也可以使用这种方式
            intent.setClassName(packageName, mainAct);
            startActivity(intent);
    
        }
    
        /*
         * check the app is installed
         */
        private boolean isAppInstalled(Context context, String packagename) {
            PackageInfo packageInfo;
            try {
                packageInfo = context.getPackageManager().getPackageInfo(packagename, 0);
            } catch (NameNotFoundException e) {
                packageInfo = null;
                e.printStackTrace();
            }
            if (packageInfo == null) {
                // System.out.println("没有安装");
                return false;
            } else {
                // System.out.println("已经安装");
                return true;
            }
        }

    附一个打开qq浏览器的方式,其他应用如果你已经知道了包名和主activity的名称,也可使用这种方式,不过intent的action和Category可能需要改一改。

        private void go2Browser(String url) {
            if (!isAppInstalled(this, "com.tencent.mtt")) {
                ToastUtil.showToast(this, "您没有安装QQ浏览器", Toast.LENGTH_LONG);
                return;
            }
            Uri uri = Uri.parse(url);
            Intent intent = new Intent();
            intent.setAction("android.intent.action.VIEW");
            intent.setClassName("com.tencent.mtt", "com.tencent.mtt.MainActivity");
            intent.setData(uri);
            startActivity(intent);
        }
  • 相关阅读:
    详解学习C#的方法和步骤
    将今天写进历史,即可得出现在的世界是数字的
    60秒,我们可以干什么?
    《每个人都会死,但我总以为自己不会》让我直面死亡
    介绍Ext JS 4.2的新特性的《深入浅出Ext JS》上市
    十一阅读攻略:和土豪做朋友,告别穷屌丝,迎接高富帅,成功逆袭!
    超低成本----音视频通讯+共享屏幕+电子白板
    Hbase split的三种方式和split的过程
    分布式数据库 HBase
    Sqoop-1.4.6.bin__hadoop-2.0.4-alpha 环境搭建
  • 原文地址:https://www.cnblogs.com/wangyuehome/p/4974116.html
Copyright © 2011-2022 走看看