android启动多个第三方app吗,Android实现打开第三方app

### 前言

在`android`开发过程中,我们有时会涉及到在本应用中打开第三方应用的需求,那么这里我封装了一个工具类——`AppHelper`,用于实现获取本设备中app安装列表及在本应用中打开第三方应用的功能,下面就来看看它的使用吧。

今天涉及内容:

1. AppHelper 方法简介

2. AppHelper 在 Activity 中的使用

3. 第三方应用打开失败的可能原因

4. 效果图和项目结构图

先来波效果图

![](/contentImages/image/20210412/T2K4ng2hSkOnSLeImRs.gif)

#### 一.AppHelper 方法简介

`AppHelper`主要方法如下:

```

/**获取设备安装的app列表信息**/

public static ListgetAppInfos(Context context)

/***

* 根据包名打开一个app

*

* @param context

* @param packageName: 包名全称,如:"com.ss.android.article.lite"

*/

public static boolean openAppByPackageName(Context context,String packageName)

```

#### 二.AppHelper 在 Activity 中的使用

下面贴出`AppHelper `在`TempActivity` 中使用代码:

```

@RequiresApi(api = Build.VERSION_CODES.N)

public class TempActivity extends AppCompatActivity implements View.OnClickListener {

private TextView mTvTest;

private Button mBtnTest;

private Button mBtnTest2;

@Override

protected void onCreate(@Nullable Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_temp);

//初始化控件

initView();

//初始化数据

initData();

//控件监听

setListener();

}

/**

* 初始化控件

**/

private void initView() {

mTvTest = findViewById(R.id.mTvTest);

mBtnTest = findViewById(R.id.mBtnTest);

mBtnTest2 = findViewById(R.id.mBtnTest2);

}

private void initData() {

}

/**

* 控件监听

**/

private void setListener() {

//点击事件

mBtnTest.setOnClickListener(this);

mBtnTest2.setOnClickListener(this);

}

@Override

public void onClick(View v) {

switch (v.getId()) {

case R.id.mBtnTest:

LogUtil.i("======获取本设备安装的app列表======");

//获取本设备安装的app列表

Listlist = AppHelper.getAppInfos(TempActivity.this);

StringBuffer buffer = new StringBuffer();

for (AppInfo info : list) {

if (info.isUserApp()) {

buffer.append(" "+info.getAppName() +" "+info.getApkSize()+" "+info.getPackageName()+"\n");

}

}

LogUtil.i(buffer.toString());

mTvTest.setText(buffer.toString());

break;

case R.id.mBtnTest2:

LogUtil.i("=====打开今日头条极速版======");

//打开今日头条

String jinri="com.ss.android.article.lite";

boolean flag=AppHelper.openAppByPackageName(TempActivity.this,jinri);

LogUtil.i("===打开应用是否成功: "+flag);

break;

default:

break;

}

}

}

```

#### 三. 第三方应用打开失败的可能原因

当我们调用`openAppByPackageName(Context context,String packageName)`返回`false`时,先要确定你写的包名是正确的,如果这种情况下,依然返回`false`,则需要考虑你调试的设备是否安装了要打开的软件。判断的话,可以先遍历本机安装的`app`,然后看是否含你要打开的`app`

#### 四. 效果图和项目结构图

效果图

![](/contentImages/image/20210412/T2K4ng2hSkOnSLeImRs.gif)

项目结构图

![](/contentImages/image/20210412/4uGKHZHe6MiuYvRhl8D.png)

ok,今天的内容就介绍到这里了,谢谢大家。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值