例子:打开微信应用(如果为安装微信或者安装的不是官方微信则给出提示,如果没有isAvilible()方法的这步判断,则操作工程中可能或有闪退崩溃的情况)
public class MainActivity extends Activity implements OnClickListener {
private Button btn_test;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn_test = (Button) findViewById(R.id.btn_test);
btn_test.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_test:
if (isAvilible(this, "com.tencent.mm")) {// 传入指定应用包名
Toast.makeText(MainActivity.this, "已安装微信",Toast.LENGTH_LONG).show();
}else{
Toast.makeText(MainActivity.this, "未安装微信",Toast.LENGTH_LONG).show();
}
break;
}
}
/**
* 检查手机上是否安装了指定的软件
*/
private boolean isAvilible(Context context, String packageName) {
// 获取packagemanager
final PackageManager packageManager = context.getPackageManager();
// 获取所有已安装程序的包信息
List<PackageInfo> packageInfos = packageManager.getInstalledPackages(0);
// 用于存储所有已安装程序的包名
List<String> packageNames = new ArrayList<String>();
// 从pinfo中将包名字逐一取出,压入pName list中
if (packageInfos != null) {
for (int i = 0; i < packageInfos.size(); i++) {
String packName = packageInfos.get(i).packageName;
packageNames.add(packName);
}
}
// 判断packageNames中是否有目标程序的包名,有TRUE,没有FALSE
return packageNames.contains(packageName);
}
}
注:如果是别的手机应用程序可以在网上搜索对应的软件包名