zoukankan      html  css  js  c++  java
  • Android应用中如何启动另一个应用

    Android中 一个应用启动另外一个应用一般有2种情况,

       被启动应用的包名已知 和  未知两种情况:

    1  被启动应用的包名已知:

      

       /**启动另外应用的代码,其中被启动的应用的包名为packageName,
            应用的入口为packageName.MainActivity,
          此方法的2个应用的AndroidManifest.xml文件都不需要修改
         **/   
        Intent intent = new Intent();   
        intent.setComponent(new ComponentName("packageName","packageName.MainActivity"));   
        intent.setAction(Intent.ACTION_VIEW);   
        startActivity(intent);   
     
    

     2  被启动应用的包名未知: 

      这种情况虽然是不知道应用的包名,但是最终启动应用还是通过包名启动。所以要通过一种方法获得手机内应用的包名。 
    手机内分系统预装应用和非系统自己安装的应用,可以通过下边的方法判断,返回一个包名的List集合: 

     public List<PackageInfo> getAllApps() {     
            List<PackageInfo> apps = new ArrayList<PackageInfo>();     
            PackageManager packageManager = this.getPackageManager();     
            //获取手机内所有应用     
            List<PackageInfo> paklist = packageManager.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;     
    }   
    

      由于这是个包名的List集合:我们仍不能确定我们要启动的应用是哪个,没关系,我们还可以进一步获取应用名。

     public String[] launchApp() {   
            PackageManager packageManager = this.getPackageManager();   
            List<PackageInfo> packages = getAllApps(); 
            str3=new String[packages.size()];
            PackageInfo pa = null;   
            for(int i=0;i<packages.size();i++){   
                pa = packages.get(i);   
                //获得应用名。这里的str3是我定义的一个数组,承载应用名。
                str3[i] = packageManager.getApplicationLabel(pa.applicationInfo).toString();   
      
            }   
      
    		return str3;
        }   
    

      最后可以根据我们要启动的应用名和String[]组数的每一项做判断。若为true,则启动应用,若为fause,则进行下一项判断。

  • 相关阅读:
    JVM运行参数
    JVM学习
    自己瞎写的小项目随笔
    git入门
    @ResponseBody 注释
    jquery 正则表达式 验证邮箱 手机号 座机号 身份证
    ORACLE计算一年的12个月份
    css 图片 文字居中
    Jquery 取值相关
    标题栏下拉菜单
  • 原文地址:https://www.cnblogs.com/wei1228565493/p/4221735.html
Copyright © 2011-2022 走看看