关注微信号:javalearns   随时随地学Java

或扫一扫

随时随地学Java

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);   
        }

关注微信号:javalearns   随时随地学Java

或扫一扫

随时随地学Java

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

  1. android 多个dialog 交替显示,Android如何在一个AlertDialog中一个接一个地显示两个ListViews...

    我有两个列表.一个列表显示可用列表中的所有可用项目(lv_available_items)和仅次要项目(lv_selected_items).我还希望该选定列表最多占用显示的50%,因此我使用属性&q ...

  2. java中 在一个异常处理中什么语句块是可多个的

    java中 在一个异常处理中什么语句块是可多个的 参考文章: (1)java中 在一个异常处理中什么语句块是可多个的 (2)https://www.cnblogs.com/zhuyeshen/p/10 ...

  3. vue中在一个函数中调用另外一个函数

    vue中在一个函数中调用另外一个函数 this.$options.methods.函数名.bind(this)();

  4. python中在一个字符串中查找另一个字符串。实现一个字符串的find函数。

    1.在一个字符串中查找另一个字符串 2.找到了返回第一次出现的位置 3.没找到返回-1 4.参数s1为源字符串,参数s2为要查找的字符串 def index_of_str(s1, s2):n1=len ...

  5. Android——怎么在一个 Activity 中销毁另外一个 Activity

    1,在Activity中定义静态变量mActivity,并让mActivity等于this public class MainActivity extends AppCompatActivity {p ...

  6. html网页中在一个表格中去除部分表格线

    关键点:先合并可合并的单元格要将定义的style样式放在td(单元格)中,不能放在tr(行)中否则表格线不能完全隐去(需要显示表格线的可将style样式放在tr中) 一.head中的部份样式示例(可根 ...

  7. c#中在一个窗体中触发另一个窗体的事件

    创建两个窗体,分别为form1,form2,在form1中添加控件textBox1和button1,创建一个form2的对象Form2 b = null; 在form2中添加button1,定义委托和 ...

  8. android之隐示意图跳转启动另一个activity

    主面板布局:layout/activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/r ...

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

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

最新文章

  1. 使用 Struts2 校验器校验用户注册信息的例子
  2. mysql查看当前实时连接数
  3. 从入门到熟悉 HTTPS 的 9 个问题
  4. 工程代码_特征工程学习,19 项实践 Tips!代码已开源!
  5. 百度是如何收录没有提交过的新站
  6. PyTorch-混合精度训练
  7. Linux/C/C++ 不可错过的好书
  8. python2 openpyxl 复制excel内容到新的excel文件中 告警问题
  9. Android Bitmap OutOfMemory 解决办法
  10. OllyDbg笔记-暴力破解简单判断程序(TraceMe.exe与简单Qt程序)
  11. C#中采用SHA1或MD5加密字符串的函数
  12. Vue使用html2Canvas和canvas2Image下载二维码会模糊的问题解决方法
  13. abstract class和interface有什么区别?_程序员必须掌握了解的21个Java核心技术,还在等什么?...
  14. java转账_JAVA实现银行转账功能
  15. Go语言的安装与环境配置
  16. 学习html+css+js笔记
  17. 银行卡四要素认证api接口_银行卡实名认证查询-银行卡四要素鉴权
  18. Android Netd
  19. magicbook装深度linux,荣耀Magicbook 2019锐龙版装Deepin 20后亮度无法调节的解决
  20. java close 方法,close()方法的用法(Java初学者)

热门文章

  1. EasyUI iconCls
  2. [吴功宜]计算机网络学习笔记--第三章 数据链路层
  3. netsh wlan命令
  4. MACOM观点:5G网络形势下的光通讯需求有哪些?
  5. 读《编写高质量iOS与OS X代码的52个有效方法》
  6. 小蓝单车 CEO 李刚:辜负了各位,对不起
  7. 《ANSYS 14热力学/电磁学/耦合场分析自学手册》——2.4 菜单栏
  8. 上海理工大学计算机博士点科学技术,上海理工大学博士点有哪些
  9. 机器学习实验四:深度学习图像生成(Part two:DeepDream)
  10. Windows 网络编程