Android APP导流需求实现

需求实现:已经上架的APP为第三方APP导流,实现第三方APP安装检测,已安装则跳转打开第三方APP,未安装则跳转浏览器打开下载链接

实现步骤:

1.检测应用是否安装

2.跳转其他应用

3.跳转浏览器打开下载链接

1.1 检测APP是否安装

通过获取系统上已安装的所有app列表来查找,需要获取所有已安装app信息有隐私泄露风险

public boolean isAppInstalled(Context context, String packageName){
        if (context == null || packageName == null)
            return false;
        PackageManager pm = context.getPackageManager();
        List<PackageInfo> packageInfos = pm.getInstalledPackages(0);
        for (PackageInfo packageInfo : packageInfos){
            if (packageInfo.packageName.equals(packageName))
                return true;
        }
        return false;
    }

通过获取特定包名的app信息来判断

public static boolean checkAPPInstalled(Context context, String pkgName) {
    if (TextUtils.isEmpty(pkgName)) {
        return false;
    }
    try {
        context.getPackageManager().getPackageInfo(pkgName, 0);
    } catch (Exception x) {
        return false;
    }
    return true;
}

2.1 跳转第三方应用

public void jumpOtherAPP(Context context,String packageName){
		Intent intent = context.getPackageManager().getLaunchIntentForPackage(packageName);
        if(intent != null)
		    context.getApplicationContext().startActivity(intent);
	}

3.1 跳转浏览器打开下载链接

public void downloadApp(Context context,JSONObject urlObj){
		String downloadUrl = "";
		String manufacturer = Build.MANUFACTURER;
		if (manufacturer != null && manufacturer.length()>0){
			String phone_type = manufacturer.toLowerCase();
			switch (phone_type){
				case "huawei":
					downloadUrl = urlObj.optString("huawei");
					break;
				case "xiaomi":
					downloadUrl = urlObj.optString("xiaomi");
					break;
				case "samsung":
					downloadUrl = urlObj.optString("samsung");
					break;
				case "lenovo":
					downloadUrl = urlObj.optString("lenovo");
					break;
				case "honor":
					downloadUrl = urlObj.optString("honor");
					break;
				case "oppo":
					downloadUrl = urlObj.optString("oppo");
					break;
				case "vivo":
					downloadUrl = urlObj.optString("vivo");
					break;
				default:
					downloadUrl = urlObj.optString("default");
					break;
			}
		}
		if(TextUtils.isEmpty(downloadUrl)) {
			return;
		}
		Intent intent = new Intent();
		intent.setAction(Intent.ACTION_VIEW);
		intent.setData(Uri.parse(downloadUrl));
		intent.addCategory(Intent.CATEGORY_BROWSABLE);
		// 注意此处的判断intent.resolveActivity()可以返回显示该Intent的Activity对应的组件名
		if (intent.resolveActivity(context.getPackageManager()) != null) {
			context.startActivity(Intent.createChooser(intent, "请选择浏览器"));
		} else {
			Toast.makeText(context.getApplicationContext(), "请下载浏览器", Toast.LENGTH_SHORT).show();
		}
	}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汤面不加鱼丸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值