intent打开第三方应用
2015-11-18 12:19
211 查看
有时候我们会有在自己的应用中进入另一个第三方应用的需求,首先要知道第三方应用的包名和主activity,很简单遍历一下所有的应用就能拿到了。
附一个打开qq浏览器的方式,其他应用如果你已经知道了包名和主activity的名称,也可使用这种方式,不过intent的action和Category可能需要改一改。
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); }
相关文章推荐
- MySQL:触发器
- [LeetCode] Additive Number 加法数
- OCP考点实战演练01-备份恢复篇
- sqlnet.ora configuration for toad
- MySQL:视图
- 父窗口和iframe子窗口之间相互传递参数和调用函数或方法
- STM32F103 与 STM32F207/407编程的区别自我总结
- ViewPage+Fragment的使用用法
- MySQL下常见的启动失败与备份失败问题的解决教程
- MySQL:存储过程和函数
- 数据驱动编程 游戏GM的实现
- Linux chmod命令修改文件与文件夹权限命令代码
- Oracle建立表空间、用户、授权
- MySQL:索引
- chmod命令详细用法
- Unicode utf8等编码类型的原理
- chmod 777 修改权限
- FSL安装
- MySQL:插入、更新与删除数据
- 08day03