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);
        }
  • 相关阅读:
    初学JS——利用JS制作的别踩白块儿(街机模式) 小游戏
    对于大数据量的Json解析
    Json数据中的特殊字符处理
    移动端总结和手机兼容问题
    在DW 5.5+PhoneGap+Jquery Mobile下搭建移动开发环境
    HTML5所有标签汇总
    二叉树
    二分查找
    归并排序
    希尔排序
  • 原文地址:https://www.cnblogs.com/wangyuehome/p/4974116.html
Copyright © 2011-2022 走看看