### 前言
在`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,今天的内容就介绍到这里了,谢谢大家。