zoukankan      html  css  js  c++  java
  • android在程序中打开另一个程序

      在开发android应用的时候,在一些情况下要有前置条件,比如这边所说的要启动时要确保别的应用程序服务已经打开  或者在操作中启动别的应用等。

      先来一段google上的代码:

    1、 已知包名和类名的情况下:

    Intent intent = new Intent(Intent.ACTION_MAIN); 
    intent.addCategory(Intent.CATEGORY_LAUNCHER);        //前面两个设置是为了调用该应用的主页 也就如C#或JAVA 常说的 MAIN函数入口
    ComponentName cn = new ComponentName(packageName, className);   //ComponentName优先于 action category  data etc.     
    intent.setComponent(cn); 
    startActivity(intent);  

    主要是对intent的属性 ComponentName的设置; 

    这个方法的缺点是 必须知道该应用的pkg 也就是包名,以及activity的类名; 但是大多数情况下 我们并不知道第三方应用的包名等信息o(╯□╰)o

    2、在不知道包名的情况需要用到android 的程序包管理器 PackageManager (还有我雪亮的近视眼)

     // 启动iscan
        private void startIscan() {
             PackageManager pm=getPackageManager();  //获取程序包服务
    // pm.getInstalledApplications(0);    //由于不知道只知道第三方程序的名字,我就SB的用这个方法获取所有已安装程序的信息,然后用我的250读近视眼一个个查看~~ 终于找到需要的包名了 找到包名就非常好办了!!!

    Intent intent = new Intent(); intent=pm.getLaunchIntentForPackage("com.iData.idata_iscan"); //这个方法直接返回 访问特定包名下activity或service etc.的入口的intent , 省去设置componentName的参数 startActivity(intent); // startService(intent) 为启动服务 }

    两种方法都是通过intent来启动, 主要区别是intent的属性设置方法不同。 第一个是对ComponentName的设置 ,第二种是利用PackageManager来获取特定包名(包名也通过 pkgManager来获取) 的启动intent。

       
  • 相关阅读:
    RabbitMQ
    Java 多线程
    Java 多线程
    Java 多线程
    Java 多线程
    Springboot
    SpringBoot
    SpringCloud Config
    Financial
    Hystrix
  • 原文地址:https://www.cnblogs.com/mushishi/p/3396346.html
Copyright © 2011-2022 走看看