Android 通过包名打开App的代码

做launcher时,用户点击apk的图标就对应着需要打开这个apk,有两种方式可以启动这个apk

第一种:知道apk的包名和它的主Activity

[java] view
plain
copyprint?

  1. // 帮助  
  2. private ComponentName help_set;  
  3. private final static String help_set_pack = "cn.abc.help";  
  4. private final static String help_set_name = "cn.abc.help.MainActivity";  
  5.   
  6. /** 
  7.  * 启动一个app 
  8.  * com -- ComponentName 对象,包含apk的包名和主Activity名 
  9.  * param -- 需要传给apk的参数 
  10.  */  
  11. private void startApp(ComponentName com, String param) {  
  12.     if (com != null) {  
  13.         PackageInfo packageInfo;  
  14.         try {  
  15.             packageInfo = getPackageManager().getPackageInfo(com.getPackageName(), 0);  
  16.         } catch (NameNotFoundException e) {  
  17.             packageInfo = null;  
  18.             Toast.makeText(this, "没有安装", Toast.LENGTH_SHORT).show();  
  19.             e.printStackTrace();  
  20.         }  
  21.         try {  
  22.             Intent intent = new Intent();  
  23.             intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  
  24.             intent.setComponent(com);  
  25.             if (param != null) {  
  26.                 Bundle bundle = new Bundle(); // 创建Bundle对象  
  27.                 bundle.putString("flag", param); // 装入数据  
  28.                 intent.putExtras(bundle); // 把Bundle塞入Intent里面  
  29.             }  
  30.             startActivity(intent);  
  31.         } catch (Exception e) {  
  32.             Toast.makeText(this, "启动异常", Toast.LENGTH_SHORT).show();  
  33.         }  
  34.     }  
  35. }  

第二种:只知道apk的包名,这种方法最常用了,毕竟要启动的apk不一定是我们自己写的。

[java] view
plain
copyprint?

  1.        /* 
  2.  * 启动一个app 
  3.  */  
  4. public void startAPP(String appPackageName){  
  5.     try{  
  6.         Intent intent = this.getPackageManager().getLaunchIntentForPackage(appPackageName);  
  7.         startActivity(intent);  
  8.     }catch(Exception e){  
  9.         Toast.makeText(this, "没有安装", Toast.LENGTH_LONG).show();  
  10.     }  
  11. }  

综合起来比较第二种方法的代码要简洁得多,比较实用!

时间: 2024-09-14 08:08:47

Android 通过包名打开App的代码的相关文章

通过包名打开另外一个应用程序

应用场景:对于我们自己开发的两个应用程序,一个应用程序的包名为 aa.bb.cc,软件名叫a,它的入口Activity为 aaActivity(入口activity就是在AndroidManifest.xml中标签--<action android:name="android.intent.action.MAIN" />所在的activity,说白了,就是打开应用程序,第一个显示的activity),另一个应用程序的包名为 xx.yy.zz,软件名叫x,它的入口Activi

Android判断包名和类名是否存在的方法_Android

1.对包名的判断,异常则说明不存在: 复制代码 代码如下: try { PackageManager pm = getPackageManager(); pm.getPackageInfo("com.org", PackageManager.GET_ACTIVITIES); } catch (NameNotFoundException e) {     // TODO Auto-generated catch block     e.printStackTrace(); } 2.对类名

android检测包名和类名是否存在的方法

1.对包名的判断,异常则说明不存在:  代码如下 复制代码 try { PackageManager pm = getPackageManager(); pm.getPackageInfo("com.org", PackageManager.GET_ACTIVITIES); } catch (NameNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } 2.对类名的判断,异常则说

Android判断包名和类名是否存在的方法

1.对包名的判断,异常则说明不存在: 复制代码 代码如下: try { PackageManager pm = getPackageManager(); pm.getPackageInfo("com.org", PackageManager.GET_ACTIVITIES); } catch (NameNotFoundException e) {      // TODO Auto-generated catch block      e.printStackTrace(); } 2.对

Android编程获取包名,版本信息及VersionName名称的方法_Android

本文实例讲述了Android编程获取包名,版本信息及VersionName名称的方法.分享给大家供大家参考,具体如下: 话不多说,直接上代码,此处,主要是在版本升级的时候,使用较多. private String getAppInfo() { try { String pkName = this.getPackageName(); String versionName = this.getPackageManager().getPackageInfo( pkName, 0).versionNam

java-Android开发 包名问题

问题描述 Android开发 包名问题 小白一只..想知道Android中的java包名的问题,好像看到过有书上这样说,包名是一个app的唯一标识好像,那这样的话难道意味着一个项目就一个包?如果有多个包的话,那么在Android的data目录下的那个app对应的文件夹会以哪个包名为名呢? 解决方案 此包非彼包.唯一标识指的是 packageName,在manifest中有定义,相当于应用程序的id.而项目目录结构中所只的包名,随意..一般跟目录都跟packageName一样. 解决方案二: 问题

在不同包名的应用之间进行实时语音的问题

问题描述 假设我们的产品线,两个不同包名的应用产品1:android端 包名com.xxxx.xxxx01 给用户用的APP产品2:android端 包名com.xxxx.xxxx02 给客服用的APP这两个应用之间,可以共享一个环信的APPID吗 解决方案 两个应用可以使用一个appkey解决方案二:APPID是指什么解决方案三:APPID 指的是 应用标识(AppKey) 我在环信后台新建一个应用,然后我的两个android应用都用同一个应用标识(AppKey)解决方案四:好的,谢谢

Android在应用中依据包名启动另外一个APP

以下为TestIntentData工程 MainActivity如下: package cn.testintentdata; import java.util.List; import android.net.Uri; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.a

java批量采集豌豆荚网站Android应用图标和包名_java

Android主题开发者做的主题,如果想代替第三方应用图标,就必须要知道应用的包名.其实想知道应用的包名很简单,直接在浏览器打开Google Play或豌豆荚,打开某应用的页面,看网址你就会发现,网址最后"/"字符后接的就是应用的包名! 估计有人想把常用应用的图标和包名都搞下来,所以用java写了个小程序,批量抓取了豌豆荚上"全部软件"按总下载量排名里1到20页的应用图标与包名. 所有图标都用包名来命名的,里面还有一个packageName.txt文件,包含了应用名