从一个应用进入另外一个应用

         在一个应用中,点击按钮进入另一个应用。

         先声明一个按钮:

                 Button btn = (Button) findViewById(R.id.btn);

                btn.setOnClickListener(new OnClickListener() {
   
                              @Override
                             public void onClick(View v) {
                                       Intent i = new Intent(Intent.ACTION_MAIN);
                                       i.addCategory(Intent.CATEGORY_LAUNCHER);
                                      //此处需要APK的包名和APK的类名

                                       i.setComponent(new ComponentName(apkPackageName,apkActivityName));
                                       startActivity(i);
                                       //在进入另一个应用的同时,结束当前的应用,这样不致于让这个应用一直在后台运行

                                         finish();
                                        }
                                    });

                      在这里需要获得需要启动的应用的包名和类名。

         获得APK的包名:

    /**
     * 获取指定APK文件的PackageInfo
     *
     * @param context
     * @param fileName
     * @return
     */
    public static PackageInfo getApkFileInfo(Context context, String fileName) {

     //此处的fileName为APK所在地址的完整路径名+APK名
        return context.getPackageManager().getPackageArchiveInfo(fileName,PackageManager.GET_META_DATA);
    }

   
     PackageInfo packageInfo = getApkFileInfo(this,apkcachePath);
     ApplicationInfo applicationInfo = packageInfo.applicationInfo;
     String  apkPackageName = applicationInfo.packageName;

     // 获取应用的Activity名
     PackageManager pm = getPackageManager();
     PackageInfo info = null;
     try {
      info = getPackageManager().getPackageInfo( apkPackageName, 0);
      Intent intent = new Intent(Intent.ACTION_MAIN, null);
      intent.addCategory(Intent.CATEGORY_LAUNCHER);
      intent.setPackage(info.packageName);
      List<ResolveInfo> apps = pm.queryIntentActivities(intent, 0);
      ResolveInfo ri = apps.iterator().next();
      if (ri != null) {
      String  apkActivityName = ri.activityInfo.name;
      }
     } catch (NameNotFoundException e) {
      e.printStackTrace();
     }

   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值