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

来源:互联网 发布:年度网络中文新词 编辑:程序博客网 时间:2024/05/17 01:20

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

         先声明一个按钮:

                 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();
     }

   

原创粉丝点击