• 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#连接mysql
    【转】深度优先算法
    【转】mysql安装
    win7NVIDIA显卡驱动升级时卡住
    【转】win7系统删除桌面IE图标
    双系统删掉一个后,所在分区无法格式化
    SQL各种JOIN
    C# 反射
    【转】C#强制转换和显式转换
    SQL Server 去除表中字段空格
  • 原文地址:https://www.cnblogs.com/wangyuehome/p/4974116.html
Copyright © 2020-2023  润新知