Android中 一个应用启动另外一个应用一般有2种情况,被启动应用的包名已知和未知两种情况: 
 
*情况一 =====》已知包名通常有两种方法: 
 
方法一: 
 
[java]
 
    /**启动另外应用的代码,其中被启动的应用的包名为org.hy,应用的入口为org.hy.Test222Activity,此方法的2个应用的AndroidManifest.xml文件都不需要修改**/   
    Intent intent = new Intent();   
    intent.setComponent(new ComponentName("org.hy","org.hy.Test222Activity"));   
    intent.setAction(Intent.ACTION_VIEW);   
    startActivity(intent);   
 
方法二: 
 
[java]
 
    /**启动另外应用的代码,其中被启动应用的action为org.hy.test222(自己随便定义),此方法的被启动的应用的AndroidManifest.xml要做修改**/   
    Intent intent = new Intent();   
    intent.setAction("org.hy.test222");   
    startActivity(intent);   
 
[html] 
 
    /**被启动应用的AndroidManifest.xml**/   
    <?xml version="1.0" encoding="utf-8"?>   
    <manifest xmlns:android=" http://schemas.android.com/apk/res/android"   
          package="org.hy"   
          android:versionCode="1"   
          android:versionName="1.0">   
        <uses-sdk android:minSdkVersion="10" />   
       
        <application android:icon="@drawable/icon" android:label="@string/app_name">   
            <activity android:name=".Test222Activity"   
                      android:label="@string/app_name">   
                <intent-filter>   
                    <action  android:name="org.hy.test222"/>   
                    <action android:name="android.intent.action.MAIN" />   
                    <category android:name="android.intent.category.DEFAULT" />   
                </intent-filter>   
            </activity>   
       
        </application>   
    </manifest>   
 
方法二中 AndroidManifest.xml中category设置为android.intent.category.DEFAULT的情况是当Intent启动的时候没有明确指定启动哪个antivit时候就要这样设置。 
 
*情况二 ==》未知包名: 
这种情况虽然是不知道应用的包名,但是最终启动应用还是通过包名启动。所以要通过一种方法获得手机内应用的包名。 
手机内分 系统预装应用和非系统自己安装的应用,可以通过下边的方法判断,返回一个包名的List集合: 
[java]
 
    /**获得手机内应用的包名,返回一个List集合**/   
    public List<PackageInfo> getAllApps() {     
            List<PackageInfo> apps = new ArrayList<PackageInfo>();     
            PackageManager packageManager = this.getPackageManager();     
            //获取手机内所有应用     
            List<PackageInfo> paklist = pManager.getInstalledPackages(0);     
            for (int i = 0; i < paklist.size(); i++) {     
                PackageInfo pak = (PackageInfo) paklist.get(i);     
                //判断是否为非系统预装的应用  (大于0为系统预装应用,小于等于0为非系统应用)   
                if ((pak.applicationInfo.flags & pak.applicationInfo.FLAG_SYSTEM) <= 0) {     
                    apps.add(pak);     
                }     
            }     
            return apps;     
    }   
 
获得包名后,就可以通过获得要启动的包名启动应用了 
[java]
 
    public void launchApp() {   
            PackageManager packageManager = this.getPackageManager();   
            List<PackageInfo> packages = getAllApps();   
            PackageInfo pa = null;   
            for(int i=0;i<packages.size();i++){   
                pa = packages.get(i);   
                //获得应用名   
                String appLabel = packageManager.getApplicationLabel(pa.applicationInfo).toString();   
                //获得包名   
                String appPackage = pa.packageName;   
                Log.d(""+i, appLabel+"  "+appPackage);   
            }   
            Intent intent = packageManager.getLaunchIntentForPackage("jp.co.johospace.jorte");//"jp.co.johospace.jorte"就是我们获得要启动应用的包名   
            startActivity(intent);   
        }

摘自  心飞扬

Android中 一个应用启动另外一个应用一相关推荐

  1. Android 一个应用启动另外一个应用

    Android中 一个应用启动另外一个应用一般有2种情况,被启动应用的包名已知和未知两种情况:    *情况一 ==>已知包名通常有两种方法:    方法一:    [java]       / ...

  2. 开机自启动和由一个APK启动另一个APK核心代码

    1.开机自启动 public class BootReceiver extends BroadcastReceiver {private static final String ACTION = &q ...

  3. android启动其他app的服务器,Android中通过外部程序启动App的三种方法

    这篇文章主要介绍了Android中通过外部程序启动App的三种方法, 本文讲解了直接通过包名. 通过自定义的Action. 通过Scheme三种方法,并分别给出操作代码,需要的朋友可以参考下 ==== ...

  4. Android中一个APP启动另一个APP并传递参数

    被调用(启动)的APP: 项目名字:Demo_ybs 项目包名:com.ybs.demo_ybs 被调用APP中获取调用者的传递数据: package com.ybs.demo_ybs;import ...

  5. Android中点击按钮启动另一个Activity以及Activity之间传值

    场景 点击第一个Activity中的按钮,启动第二个Activity,关闭第二个Activity,返回到第一个Activity. 在第一个Activity中给第二个Activity传递值,第二个Act ...

  6. android demo 调用,Android中调用C++函数的一个简单Demo

    这里我不想多解释什么,对于什么JNI和NDK的相关内容大家自己去百度或谷歌.我对Android的学习也只是个新手 .废话少说直接进入正题. 一.在Eclipse中创建一个Android Applica ...

  7. Android中设置RecyclerView的每一个item的单项点击事件

    场景 Android中使用Adapter(适配器)给RecycleView设置数据源: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/detail ...

  8. Android中四种启动模式,最容易理解的小白教程

    说起Android中的启动模式,其实是个很基础的内容,谁都知道是4中启动模式,没错分别是以下四种: 1,standard 2,singleTop 3,singleTask 4,singleInstan ...

  9. Android中Service的启动方式及Activity与Service的通信方式

    Service启动的两种方式 1.通过startService启动 使用Service的步骤: 定义一个类继承Service 在Manifest.xml文件中配置该Service 使用Context的 ...

最新文章

  1. 2.2 使用词嵌入-深度学习第五课《序列模型》-Stanford吴恩达教授
  2. view函数_数据科学系列:数据处理(6)字符串函数基于R(二)
  3. iOS: bundle name, bundle display name, bundle identifier...
  4. mui hello html5 安装,HBuilder开发App Step1——环境搭建,HelloMUI 以及真机调试(示例代码)...
  5. qdu-凑数题(01背包)
  6. C语言:斗地主发牌程序
  7. 网络安全人才平均年薪 24.09 万,跳槽周期 31 个月,安全工程师现状大曝光!
  8. css根据屏幕大小切换样式
  9. imindmap12新版本 思维导图软件
  10. Zilliqa Scilla入门
  11. ffmpeg历史版本下载
  12. Error: ImageIO: PNG invalid PNG file: iDOT doesn't point to valid IDAT chunk 解决
  13. WH-1000XM3耳机怎么连接蓝牙
  14. Node 的单元测试--jasmine
  15. 正则表达式提取html内容
  16. 在计算机英语中 update是什么意思,电脑出现windows update是什么意思?
  17. opencv_模板匹配
  18. 生物医学知识库/知识图谱(英文+中文)盘点
  19. 创造与魔法游戏最新的服务器,创造与魔法MOD服务器
  20. 外行学计算机,《新手无忧学电脑:外行入门学电脑(2008至尊经典版)》低价购书_计算机与互联网_孔网...

热门文章

  1. windows下查看端口的方法以及管道符号|
  2. 安装.Net Framework 4.7.2时出现“不受信任提供程序信任的根证书中终止”的解决方法
  3. hdu-1174 爆头(计算几何)
  4. Arcgis 投影变换,以北极为中心方向显示
  5. ROS小车+Velodyne16线+legoloam仿真
  6. Python安装pyqt5-tools失败
  7. wps全国计算机二级考试科目,可喜可贺,WPS Office成为NCRE二级单独考试科目
  8. 【C#】[网络]WebBrowser网页操作之提取获取元素和标签(完整篇)
  9. win10系统如何恢复回收站删除文件
  10. 【生态大会】重要通知!!!倒计时7天,CDEC2019生态大会•上海站,五种“姿势”抢先看~...