Android的当前应用启动第三方应用(跨软件启动页面)
Android的当前应用启动第三方应用(跨软件启动页面)
当我们需要在一个软件页面里调用另一个软件的某个页面,这时就需要跨软件启动页面,比如我们在自己的页面里调用支付宝或微信的页面。
1.方法1
第一步:在A软件的页面配置文件里添加android:exported=”true”
第二步:在A软件的页面配置文件里添加intent-filter标签,格式为:
<intent-filter >
<action android:name="命名"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
例:
第三步:在B软件里启动A软件里的页面,如
Intent i=new Intent("zhao.sizhe.a");
startActivity(i);
常用包名
// 微信 包名 com.tencent.mm //启动类名:com.tencent.mm.ui.LauncherUI
//QQ 包名 com.tencent.mobileqq //启动类名:com.tencent.mobileqq.activity.HomeActivity
//支付宝 包名:com.eg.android.AlipayGphone //启动类名com.eg.android.AlipayGphone.FastStartActivity
//钉钉 包名:com.alibaba.android.rimet //启动类名:com.alibaba.android.rimet.biz.home.activity.HomeActivity
//QQ空间 包名:com.qzone
//QQ手机管家 包名:com.tencent.qqpimsecure
//微博 包名:com.sina.weibo //启动类名:com.sina.weibo.EditActivity
2.方法2
通过app的包名和类名
Intent intent = new Intent(); ComponentName comp = new ComponentName("com.tencent.mobileqq", "com.tencent.mobileqq.activity.SplashActivity");//QQ的包名和类名// ComponentName comp = new ComponentName("com.tencent.mm", "com.tencent.mm.ui.LauncherUI");//微信的包名和类名
// ComponentName comp = new ComponentName("com.eg.android.AlipayGphone", "com.eg.android.AlipayGphone.FastStartActivity");//支付宝intent.setComponent(comp);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
//finish();
3.方法3
通过包名
private void doStartApplicationWithPackageName(String packagename) {// 通过包名获取此APP详细信息,包括Activities、services、versioncode、name等等PackageInfo packageinfo = null;try {packageinfo = getPackageManager().getPackageInfo(packagename, 0);} catch (PackageManager.NameNotFoundException e) {e.printStackTrace();}if (packageinfo == null) {return;}// 创建一个类别为CATEGORY_LAUNCHER的该包名的IntentIntent resolveIntent = new Intent(Intent.ACTION_MAIN, null);resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);resolveIntent.setPackage(packageinfo.packageName);// 通过getPackageManager()的queryIntentActivities方法遍历List<ResolveInfo> resolveinfoList = getPackageManager().queryIntentActivities(resolveIntent, 0);ResolveInfo resolveinfo = resolveinfoList.iterator().next();if (resolveinfo != null) {// packagename = 参数packnameString packageName = resolveinfo.activityInfo.packageName;// 这个就是我们要找的该APP的LAUNCHER的Activity[组织形式:packagename.mainActivityname]String className = resolveinfo.activityInfo.name;// LAUNCHER IntentIntent intent = new Intent(Intent.ACTION_MAIN);intent.addCategory(Intent.CATEGORY_LAUNCHER);// 设置ComponentName参数1:packagename参数2:MainActivity路径ComponentName cn = new ComponentName(packageName, className);intent.setComponent(cn);startActivity(intent);}}
方法3.案例:
在Java文件添加以下代码:
package com.example.tiaozhuangapp;import androidx.appcompat.app.AppCompatActivity;
import android.content.ComponentName;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.Toast;import java.util.List;public class MainActivity extends AppCompatActivity {public Intent intent;public ComponentName comp,comp1,comp2,comp3,comp4,comp5,comp6,comp7;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);supportRequestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.activity_main);Button bt = findViewById(R.id.button);Button bt2 = findViewById(R.id.button2);Button bt3 = findViewById(R.id.button3);Button bt4 = findViewById(R.id.button4);Button bt5 = findViewById(R.id.button5);Button bt6 = findViewById(R.id.button6);Button bt7 = findViewById(R.id.button7);Button bt8=findViewById(R.id.button8);Button bt13 = findViewById(R.id.button13);Button bt14 = findViewById(R.id.button14);Button bt15 = findViewById(R.id.button15);Button bt16 = findViewById(R.id.button16);Button bt17 = findViewById(R.id.button17);Button bt18 = findViewById(R.id.button18);Button bt19 = findViewById(R.id.button19);intent = new Intent();comp = new ComponentName("com.tencent.mobileqq", "com.tencent.mobileqq.activity.SplashActivity");comp1 = new ComponentName("com.tencent.qqmusic", "com.tencent.qqmusic.activity.SplashActivity");comp2 = new ComponentName("com.tencent.mm", "com.tencent.mm.ui.LauncherUI");comp3 = new ComponentName("com.eg.android.AlipayGphone", "com.eg.android.AlipayGphone.FastStartActivity");bt.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {// Intent i=new Intent(MainActivity.this,MainActivity2.class);
// startActivity(i);
// Intent i=new Intent("a.b.c");// startActivity(i);// Intent intent = new Intent();
// ComponentName comp = new ComponentName("com.tencent.mobileqq", "com.tencent.mobileqq.activity.SplashActivity");// ComponentName comp = new ComponentName("com.tencent.mm", "com.tencent.mm.ui.LauncherUI");
// ComponentName comp = new ComponentName("com.eg.android.AlipayGphone", "com.eg.android.AlipayGphone.FastStartActivity");
// intent.setComponent(comp);
// intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
// startActivity(intent);
// finish();doStartApplicationWithPackageName("com.tencent.mobileqq");}});bt2.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {doStartApplicationWithPackageName("com.tencent.mm");}});bt3.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {doStartApplicationWithPackageName("com.eg.android.AlipayGphone");}});bt4.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {doStartApplicationWithPackageName("com.taobao.taobao");}});bt5.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {doStartApplicationWithPackageName("com.tencent.qqmusic");}});bt6.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {doStartApplicationWithPackageName("com.tencent.mtt");}});bt7.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {doStartApplicationWithPackageName("com.ss.android.ugc.aweme");}});bt8.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {// Intent i=new Intent(MainActivity.this,MainActivity2.class);// startActivity(i);// finish();}});bt13.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {doStartApplicationWithPackageName("com.tencent.qqlive");}});bt14.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {doStartApplicationWithPackageName("com.baidu.tieba");}});bt15.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {doStartApplicationWithPackageName("com.chaoxing.mobile");}});bt16.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {doStartApplicationWithPackageName("net.csdn.csdnplus");}});bt17.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {doStartApplicationWithPackageName("com.tencent.wework");}});bt18.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {doStartApplicationWithPackageName("com.kingsoft");}});bt19.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {doStartApplicationWithPackageName("com.kingsoft");}});}private void doStartApplicationWithPackageName(String packagename) {// 通过包名获取此APP详细信息,包括Activities、services、versioncode、name等等PackageInfo packageinfo = null;try {packageinfo = getPackageManager().getPackageInfo(packagename, 0);} catch (PackageManager.NameNotFoundException e) {e.printStackTrace();}if (packageinfo == null) {return;}// 创建一个类别为CATEGORY_LAUNCHER的该包名的IntentIntent resolveIntent = new Intent(Intent.ACTION_MAIN, null);resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);resolveIntent.setPackage(packageinfo.packageName);// 通过getPackageManager()的queryIntentActivities方法遍历List<ResolveInfo> resolveinfoList = getPackageManager().queryIntentActivities(resolveIntent, 0);ResolveInfo resolveinfo = resolveinfoList.iterator().next();if (resolveinfo != null) {// packagename = 参数packnameString packageName = resolveinfo.activityInfo.packageName;// 这个就是我们要找的该APP的LAUNCHER的Activity[组织形式:packagename.mainActivityname]String className = resolveinfo.activityInfo.name;// LAUNCHER IntentIntent intent = new Intent(Intent.ACTION_MAIN);intent.addCategory(Intent.CATEGORY_LAUNCHER);// 设置ComponentName参数1:packagename参数2:MainActivity路径ComponentName cn = new ComponentName(packageName, className);intent.setComponent(cn);startActivity(intent);}}}
界面布局代码(xml):
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"android:background="#121113"><Buttonandroid:id="@+id/button"android:layout_width="108dp"android:layout_height="53dp"android:text="打开QQ"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.108"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"app:layout_constraintVertical_bias="0.061" /><Buttonandroid:id="@+id/button2"android:layout_width="108dp"android:layout_height="53dp"android:text="打开微信"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.108"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"app:layout_constraintVertical_bias="0.184" /><Buttonandroid:id="@+id/button3"android:layout_width="108dp"android:layout_height="53dp"android:text="打开支付宝"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.108"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"app:layout_constraintVertical_bias="0.317" /><Buttonandroid:id="@+id/button4"android:layout_width="108dp"android:layout_height="53dp"android:text="打开淘宝"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.108"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"app:layout_constraintVertical_bias="0.461" /><Buttonandroid:id="@+id/button5"android:layout_width="108dp"android:layout_height="53dp"android:text="打开QQ音乐"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.108"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"app:layout_constraintVertical_bias="0.595" /><Buttonandroid:id="@+id/button6"android:layout_width="108dp"android:layout_height="53dp"android:text="打开QQ浏览器"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.108"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"app:layout_constraintVertical_bias="0.731" /><Buttonandroid:id="@+id/button7"android:layout_width="108dp"android:layout_height="53dp"android:text="打开抖音"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.108"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"app:layout_constraintVertical_bias="0.884" /><Buttonandroid:id="@+id/button8"android:layout_width="wrap_content"android:layout_height="wrap_content"android:background="#02FFFFFF"android:text=">"android:textColor="#ffffff"android:textSize="30dp"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.95"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"app:layout_constraintVertical_bias="0.976" /><Buttonandroid:id="@+id/button13"android:layout_width="108dp"android:layout_height="53dp"android:text="打开腾讯视频"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.613"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"app:layout_constraintVertical_bias="0.061" /><Buttonandroid:id="@+id/button14"android:layout_width="108dp"android:layout_height="53dp"android:text="打开百度贴吧"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.613"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"app:layout_constraintVertical_bias="0.184" /><Buttonandroid:id="@+id/button15"android:layout_width="108dp"android:layout_height="53dp"android:text="打开学习通"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.613"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"app:layout_constraintVertical_bias="0.317" /><Buttonandroid:id="@+id/button16"android:layout_width="108dp"android:layout_height="53dp"android:text="打开csdn"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.613"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"app:layout_constraintVertical_bias="0.461" /><Buttonandroid:id="@+id/button17"android:layout_width="108dp"android:layout_height="53dp"android:text="打开企业微信"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.613"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"app:layout_constraintVertical_bias="0.595" /><Buttonandroid:id="@+id/button18"android:layout_width="108dp"android:layout_height="53dp"android:text="打开金山词霸"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.613"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"app:layout_constraintVertical_bias="0.731" /><Buttonandroid:id="@+id/button19"android:layout_width="108dp"android:layout_height="53dp"android:text="打开流利说英语"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.613"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"app:layout_constraintVertical_bias="0.884" /></androidx.constraintlayout.widget.ConstraintLayout>