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,则进行下一项判断。

  • 相关阅读:
    16日彻底去除安卓应用的内置广告
    配台600元的主机套装 自己组装 全新
    带记录功能的计算器
    华为8812 进入工程模式 和打电话黑屏问题
    买平板 四核 500~600左右对比
    querySelector()方法
    Javascript实例教程:querySelector()方法接受一个CSS查询并返回匹配模式的第一个子孙元素,如果没有匹配的元素则返回null。
    Android实用代码七段(二)
    Android实用代码七段(三)
    Firebug入门指南
  • 原文地址:https://www.cnblogs.com/wei1228565493/p/4221735.html
Copyright © 2011-2022 走看看