关闭

在App中启动另一个App的实现方式

标签: applauncher
250人阅读 评论(0) 收藏 举报
分类:

1.场景

我们经常会看到在微信里面可以调用QQ客户端,在一个App里面通过点击事件打开手机里面已经安装的某个app,从而满足我们的各种需求

2.分析

一般都不知道应用程序的启动Activity的类名,而只知道包名,我们可以通过ResolveInfo类来取得启动Acitivty的类名,然后通过packageName和className来启动另一个app.
在退出被打开的app后如果想回到之前的app,记得不要finish掉之前的app.

3.代码实现

 /**
     * 打开指定包名的app,这里的包名指的是app的主包名
     *
     * @param packageName 包名
     */
    private void openApp(String packageName) {
        PackageInfo pi = null;
        try {
            pi = getPackageManager().getPackageInfo(packageName, 0);
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }

        Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null);
        resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);
        resolveIntent.setPackage(pi.packageName);

        PackageManager pm = getPackageManager();
        List<ResolveInfo> apps = pm.queryIntentActivities(resolveIntent, 0);

        ResolveInfo ri = apps.iterator().next();
        if (ri != null) {
            String getPackageName = ri.activityInfo.packageName;
            String getClassName = ri.activityInfo.name;

            Intent intent = new Intent(Intent.ACTION_MAIN);
            intent.addCategory(Intent.CATEGORY_LAUNCHER);

            ComponentName cn = new ComponentName(getPackageName, getClassName);

            intent.setComponent(cn);
            startActivity(intent);
        }
    }


4.调用方式

 //包名
String testPackageName = "com.miui.gallery";
openApp(testPackageName);

5.参考文档

http://www.oschina.net/question/229726_36557
1
0
查看评论

在一个app中启动另外一个app的service

例如:appA要启动appB中的service 步骤一: appB中service的声明,如图 <service android:name="com.appb.BService" android:exported="true&qu...
  • u010775335
  • u010775335
  • 2017-06-28 15:12
  • 564

一个app启动另一个app

转载注明出处:点击打开链接 最近,一个app启动另一个app,这个玩法挺火的嘛,有没有试过更新QQ到5.1版本,QQ的健康里面就可以添加其他app,实现从QQ跳转到其他app应用。这个挺好玩的,一下子带来了多少流量啊。   一、先来几行代码,一个app启动另一个app   &#...
  • linxinfa
  • linxinfa
  • 2016-07-12 18:24
  • 997

Android在一个APP中通过包名或类名启动另一个APP

开发有时需要在一个应用中启动另一个应用,比如Launcher加载所有的已安装的程序的列表,当点击图标时可以启动另一个应用。一般我们知道了另一个应用的包名和MainActivity的名字之后便可以直接通过如下代码来启动:
  • mad1989
  • mad1989
  • 2014-07-24 19:05
  • 95333

Android小例子:让一个APP去启动另外一个APP

本文的主要任务是写两个Android APP,让其中的一个APP去启动另外一个APP。其中涉及的原理很简单,就是使用Android的四大组件之一BroadcastReceiver。让其中的一个APP静态注册广播接收器,让另外一个APP发送相应的广播。 本文的APP是基于Android Studio...
  • TECH_PRO
  • TECH_PRO
  • 2017-05-24 08:21
  • 478

android 实现一个app启动另一个app的service服务

首先我们创建两个android 工程 这里我们称被启动的app为甲,启动被启动的app为已,首先我们在甲 app类中new一个Myservice类 在类的onCreate函数中我们写一个匿名线程public class MyService extends Service { privat...
  • qq_33048603
  • qq_33048603
  • 2016-03-27 19:53
  • 6066

如何让一个APP启动另一个APP

如何让一个APP启动另一个APP 调用getLaunchIntentForPackage返回null
  • hnyzyty
  • hnyzyty
  • 2015-06-14 14:54
  • 517

Intent启动另一个APP里的fragment

启动外部应用的分fragment。
  • u011311586
  • u011311586
  • 2016-11-18 18:08
  • 795

Android从一个APP跳转到另一个APP的主界面或者某Activity

1. Android从一个APP跳转到另一个APP主界面 Intent intent = new Intent(Intent.ACTION_MAIN); //知道要跳转应用的包名、类名 ComponentName componentName = new ...
  • hust_twj
  • hust_twj
  • 2017-06-19 21:45
  • 20019

ios 一个app启动另一个app

问题描述:需要从一个ios应用程序中,能启动另一个ios应用程序。 开发环境:xcode7.3.1 关键词:白名单(LSApplicationQueriesSchemes)、注册自己的URL Demo源代码链接:http://pan.baidu.com/s/1bo327sb   ...
  • lurenjia_KB
  • lurenjia_KB
  • 2016-11-24 15:00
  • 1224

Android 在App中启动另一个App

Android 开发有时在App中启动另一个App,比如Launcher加载所有的已安装的程序的列表,当点击图标时可以启动另一个应用。 一般我们知道了另一个应用的包名和MainActivity的名字之后便可以直接通过如下代码来启动:Intent intent = new Intent(Intent...
  • github_25928675
  • github_25928675
  • 2015-07-19 12:56
  • 342
    个人资料
    • 访问:628449次
    • 积分:9587
    • 等级:
    • 排名:第2215名
    • 原创:318篇
    • 转载:125篇
    • 译文:0篇
    • 评论:75条
    个人联系方式
    加入我的QQ群
    文章分类
    最新评论