关注微信号: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. 列表转字符串,再转回来,完全一致
  2. Mybatis基本配置和搭建
  3. 两个计算机系统安装,如何在一台电脑上同时重装两个系统|戴尔电脑怎么安装两个系统...
  4. java x.length_Java中的length和length()
  5. 怎么看电脑的hdmi是输出还是输入_高清hdmi矩阵切换器4进4出音视频方案介绍景阳华泰科技...
  6. intellij idea+easychm生成帮助文档
  7. 【气温预测】基于matlab BP神经网络气温预测【含Matlab源码 714期】
  8. 十代主板改win7_10代cpu装win7系统及bios设置教程(完美支持10代驱动)
  9. 555定时器+74系列芯片搭建八路抢答器,30s倒计时,附Proteus仿真等
  10. Apex英雄下载慢的解决方法|Apex英雄离线包分享
  11. 【C++】error: passing ‘const xxx’ as ‘this’ argument discards qualifiers
  12. 红色警戒2修改器原理百科(九)
  13. Jdon框架(JdonFramework)应用系统
  14. 意识比智力重要,选择比努力重要
  15. vue3 setup语法糖事件引用和写法
  16. rmf 文件如何打开?
  17. MATLAB学习笔记 函数记录(三)
  18. java基于springboot家庭水电燃气网上交费系统
  19. 面向对象版贪吃蛇大作战游戏创作
  20. PS学习(一)文档的新建,分辨率的设置

热门文章

  1. mysql左联右联区别_Mysql----关于内联,左联,右联,全联的使用和理解
  2. 只能爬到小图怎么办?如何通过一张小图获得大图
  3. Hdu 1174 爆头 计算几何问题
  4. 超实用 Linux 常用命令
  5. 舱位等级新增修改总结
  6. matlab比Excel好在哪,科学网—再讨论浮点运算精度问题(IDL与Excel和Matlab相比) - 董彦卿的博文...
  7. 如何设置路由路和连接WIFI
  8. google浏览器chrome无法升级的解决方案
  9. 图片压缩怎么弄?多种图片格式压缩大小的方法
  10. spring使用Test测试时报错:Singleton bean creation not allowed while singletons of this factory are in destru