`
hunankeda110
  • 浏览: 746468 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

android 在一个应用中启动另一个应用

 
阅读更多

在程序开发过程当中,常遇到需要启动另一个应用程序的情况,比如在点击软件的一个按钮可以打开地图软件。

如果既有包名又有主类的名字,那就好 办了,

直接像下面就行:
[html] 
Intent intent = new Intent(Intent.ACTION_MAIN); 
intent.addCategory(Intent.CATEGORY_LAUNCHER);             
ComponentName cn = new ComponentName(packageName, className);             
intent.setComponent(cn); 
startActivity(intent); 

 

或者这样:

Intent intent = new Intent();
  PackageManager packageManager = this.getPackageManager();
  intent = packageManager.getLaunchIntentForPackage(packageName);
  intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED | Intent.FLAG_ACTIVITY_CLEAR_TOP) ;
  this.startActivity(intent);

一般情况下我们是不知道包名和类名的,那怎么办呢?

其实手机安装的每一个应用的包名都是可以查到的,只要我们查到相关应用的包名,再通过它获得主类名,再按照上面的方法就可以了。

第一步:怎么获得包名?

PackageManager packageManager = context.getPackageManager();

packageManager.getInstalledApplications(0);

这就得到了手机上安装的所有应用的程序信息,当然包括包名,只需要查找自己需要的程序就可以了。


下面给出一个完整的方法,以包名为参数,获取主类名之名再启动应用的具体方法:

[java] 
public static void openCLD(String packageName,Context context) { 
        PackageManager packageManager = context.getPackageManager(); 
        PackageInfo pi = null;    www.2cto.com
         
            try { 
                 
                pi = packageManager.getPackageInfo("cld.navi.mainframe", 0); 
            } catch (NameNotFoundException e) { 
                 
            } 
            Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null); 
            resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER); 
            resolveIntent.setPackage(pi.packageName); 
 
            List<ResolveInfo> apps = packageManager.queryIntentActivities(resolveIntent, 0); 
 
            ResolveInfo ri = apps.iterator().next(); 
            if (ri != null ) { 
                String className = ri.activityInfo.name; 
 
                Intent intent = new Intent(Intent.ACTION_MAIN); 
                intent.addCategory(Intent.CATEGORY_LAUNCHER); 
 
                ComponentName cn = new ComponentName(packageName, className); 
 
                intent.setComponent(cn); 
                context.startActivity(intent); 
            } 
    } 

 

0
0
分享到:
评论

相关推荐

    Android从一个应用跳转到另一个应用

    本教程将详细讲解如何在Android应用中实现从一个应用跳转到另一个应用。 首先,我们需要了解Android中的Intent机制。Intent在Android系统中扮演着消息传递的角色,它用于启动活动(Activity)、服务(Service)或...

    Android 一个app启动另一个app

    在Android平台上,应用程序之间的交互是通过Intent机制实现的,这使得一个App能够启动另一个App,或者触发特定的操作。"Android 一个app启动另一个app"这个主题涉及到的核心知识点包括Intent的使用、Intent Filter的...

    Android 应用自启动

    综上所述,Android应用的自启动主要通过BroadcastReceiver监听ACTION_BOOT_COMPLETED广播并在接收到广播后启动服务实现。在实际开发中,需要遵循最佳实践,确保应用的自启动行为既满足功能需求,又不会过度消耗用户...

    获取Android所有应用程序列表,点击某一项时可启动相应应用

    在Android开发中,获取系统所有应用程序列表并实现点击启动应用是一项常见的需求,这通常涉及到对Android系统的应用管理和Intent机制的理解。下面将详细讲解这个过程。 首先,我们需要理解Android权限。在...

    Android 一个应用启动另外一个应用Demo

    在Android平台上,应用程序之间的交互是通过Intent对象来实现的,这包括从一个应用启动另一个应用。本示例探讨了在已知和未知包名的情况下如何启动另一个应用的详细过程。 ### 已知包名的情况 #### 方法一:通过...

    Android 开机自启动应用

    在Android系统中,开机自启动应用是指当设备完成启动过程后,系统会自动运行的一类应用程序。这些应用通常会在用户无须手动干预的情况下执行特定任务,例如同步数据、推送通知或者进行后台服务的初始化。"BOOT_...

    android一个应用的acitvity调用另一个应用的activity

    然后,在应用A中,你可以创建一个Intent来启动应用B的Activity。以下是如何做到这一点的Java代码示例: ```java Intent intent = new Intent(); intent.setComponent(new ComponentName("com.example.appB", ...

    一个应用中启动另一个应用程序

    1. **将需要启动的应用放在当前应用的assets中**:在Android应用的开发过程中,assets目录是一个可以存放任意文件的地方,不参与编译过程,但可以通过AssetManager访问。因此,你可以将目标应用的APK文件(.apk)放...

    Android一个程序启动另一个程序

    在Android系统中,一个应用程序(App)启动另一个应用程序是通过Intent机制实现的。Intent是Android系统中的一个核心组件,它用于在组件之间传递消息,包括启动新的Activity、Service或者BroadcastReceiver。在这里...

    Android在一个app中实现另一个app的自动安装,安装完成后自动打开(需Root)

    Android在一个app中实现另一个app的自动安装,安装完成后自动打开(需Root),详细了解请移步:http://blog.csdn.net/zxc514257857/article/details/77485561

    android应用开机自启动

    在Android应用开发中,"开机自启动"是一个常见的需求,特别是在需要后台服务持续运行或者希望应用程序在用户开机后立即可用的情况下。本知识点主要讲解如何利用Android的广播接收器(BroadcastReceiver)来实现在...

    android应用程序开机启动

    Android应用程序可以实现开机时启动相关应用 如service等 Android系统在开机启动时会发出一个系统广播&quot;android intent action BOOT COMPLETED&quot; 在接收到这个广播就可以实现开机自启动功能 下面就是一个...

    android 判断应用是否第一次启动

    在启动应用的第一个Activity时,可以检查Intent是否有特定的Extra数据,如果没有,视为第一次启动。 以上就是判断Android应用是否第一次启动的常见方法,通常首选SharedPreferences,因为它简单且效率高。在实际...

    android 开机启动应用

    在Android中,应用的启动通常始于一个Activity,而开机启动应用则需要借助广播接收器(BroadcastReceiver)。当设备完成启动并接收到ACTION_BOOT_COMPLETED广播时,我们定义的广播接收器可以捕获这个事件,从而启动...

    Android应用开机自动启动

    首先,我们需要创建一个`BroadcastReceiver`子类,例如命名为`BootReceiver`: ```java public class BootReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent ...

    Android-一款实用Android平台上的应用开机启动项管理

    BootManager项目提供了一个解决方案,它允许用户管理和控制哪些应用能够在开机时启动。这个工具通常具备以下功能: 1. **扫描应用**:BootManager会遍历系统中的所有应用,识别出含有开机启动服务或广播接收器的...

    android监听手机app启动

    在Android系统中,开发者有时需要实现对其他应用启动情况的监听,这在各种场景下都有可能用到,比如为了分析用户行为、优化用户体验或者进行安全防护等。标题"android监听手机app启动"所指的就是这一功能,即在...

    一个应用程序启动另一个应用程序

    在Android系统中,一个应用程序启动另一个应用程序是一种常见的交互方式,这涉及到Android的组件通信机制,尤其是Activity和Intent的使用。让我们深入探讨这个话题。 首先,应用程序内的Activity跳转是Android应用...

    浅谈android性能优化之启动过程(冷启动和热启动)

    3. 在 Android 应用程序框架层中,ActivityManagerService 是一个非常重要的接口,它不但负责启动 Activity 和 Service,还负责管理 Activity 和 Service。 Step 1. 无论是通过 Launcher 来启动 Activity,还是通过...

    Android应用开机时自动启动

    本篇将深入讲解如何实现Android应用的开机自启动,并提供一个名为BootupDemo的示例代码作为参考。 首先,理解Android系统的启动流程是关键。当设备开机或恢复到激活状态时,系统会执行一系列初始化操作,其中包括...

Global site tag (gtag.js) - Google Analytics