相信现在很多应用都支持第三方登录,都会调用第三方接口进行授权,上周我接手的应用也一样,用到第三方登录,在一次偶然的时候,公司测试机器未安装QQ,我点击第三方授权登录一直没反应,我以为我代码问题,经过一番检测,反正是测试机未安装QQ,于是我就写了个工具类来检测机器是否安装这些应用。代码如下,仅供参考。
/**
* Created by zhou on 2018/7/23.
* 检测工具类 检测手机是否安装了这些应用
* 在需要的时候掉对应的方法
*/
public class JudgeApplicationIsExistUtils {
/**
* 判断微信
*/
public static boolean isWeixinAvilible(Context context) {
final PackageManager packageManager = context.getPackageManager();// 获取packagemanager
List<PackageInfo> pinfo = packageManager.getInstalledPackages(0);// 获取所有已安装程序的包信息
if (pinfo != null) {
for (int i = 0; i < pinfo.size(); i++) {
String pn = pinfo.get(i).packageName;
if (pn.equals("com.tencent.mm")) {
return true;
}
}
}
return false;
}
/**
* 判断qq是否可用
*/
public static boolean isQQClientAvailable(Context context) {
final PackageManager packageManager = context.getPackageManager();
List<PackageInfo> pinfo = packageManager.getInstalledPackages(0);
if (pinfo != null) {
for (int i = 0; i < pinfo.size(); i++) {
String pn = pinfo.get(i).packageName;
if (pn.equals("com.tencent.mobileqq")) {
return true;
}
}
}
return false;
}
/**
* 判断微博
*/
public static boolean isWeiboIAvilible(Context context) {
PackageManager pm;
if ((pm = context.getApplicationContext().getPackageManager()) == null) {
return false;
}
List<PackageInfo> packages = pm.getInstalledPackages(0);
for (PackageInfo info : packages) {
String name = info.packageName.toLowerCase(Locale.ENGLISH);
if ("com.sina.weibo".equals(name)) {
return true;
}
}
return false;
}
}
以上三个方法是检测是否已经安装此应用,使用如下
if (JudgeApplicationIsExistUtils.isQQClientAvailable(LoginActivity.this)){
// 已经安装做你要做的事情,没有则吐丝提示一下
}else {
Toast.makeText(LoginActivity.this,"检测到您未安装或登录QQ!",Toast.LENGTH_SHORT).show();
}