You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Android中实现点击按钮唤起TikTok app打开指定视频链接

实现Android端点击按钮直接唤起TikTok App打开视频链接的代码方案

核心逻辑是先判断设备是否安装TikTok,再通过TikTok专属Scheme协议跳转,避免唤起浏览器或WebView。

1. 前置配置(Android 11及以上必须配置)

Android 11以后对应用包可见性做了限制,需要先在AndroidManifest.xml的<manifest>根节点下添加包查询声明:

<queries>
    <!-- TikTok国内版包名可自行补充,以下为国际版常用包名 -->
    <package android:name="com.zhiliaoapp.musically" />
    <package android:name="com.ss.android.ugc.trill" />
</queries>

2. 功能代码实现

Java版本

先添加TikTok安装状态检测方法:

private boolean isTikTokInstalled() {
    PackageManager pm = getPackageManager();
    try {
        pm.getPackageInfo("com.zhiliaoapp.musically", 0);
        return true;
    } catch (PackageManager.NameNotFoundException e) {
        try {
            pm.getPackageInfo("com.ss.android.ugc.trill", 0);
            return true;
        } catch (PackageManager.NameNotFoundException ex) {
            return false;
        }
    }
}

按钮点击事件逻辑:

Button openTiktokBtn = findViewById(R.id.open_tiktok_btn);
openTiktokBtn.setOnClickListener(v -> {
    // 替换为你要打开的TikTok视频ID,可从公网视频链接末尾提取
    String videoId = "1234567890123456789";
    if (isTikTokInstalled()) {
        try {
            // 优先使用TikTok原生Scheme跳转
            Uri uri = Uri.parse("snssdk1233://aweme/detail/" + videoId);
            Intent intent = new Intent(Intent.ACTION_VIEW, uri);
            if (getPackageManager().resolveActivity(intent, 0) != null) {
                startActivity(intent);
            } else {
                // 第一种Scheme无效时 fallback 备用Scheme
                uri = Uri.parse("tiktok://video/" + videoId);
                intent = new Intent(Intent.ACTION_VIEW, uri);
                startActivity(intent);
            }
        } catch (ActivityNotFoundException e) {
            Toast.makeText(this, "跳转TikTok失败", Toast.LENGTH_SHORT).show();
        }
    } else {
        // 未安装TikTok时的自定义处理逻辑,比如跳转应用商店或提示安装
        Toast.makeText(this, "您尚未安装TikTok", Toast.LENGTH_SHORT).show();
    }
});

Kotlin版本

TikTok安装状态检测方法:

fun isTikTokInstalled(context: Context): Boolean {
    val pm = context.packageManager
    return try {
        pm.getPackageInfo("com.zhiliaoapp.musically", 0)
        true
    } catch (e: PackageManager.NameNotFoundException) {
        try {
            pm.getPackageInfo("com.ss.android.ugc.trill", 0)
            true
        } catch (e: PackageManager.NameNotFoundException) {
            false
        }
    }
}

按钮点击事件逻辑:

val openTiktokBtn = findViewById<Button>(R.id.open_tiktok_btn)
openTiktokBtn.setOnClickListener {
    val videoId = "1234567890123456789"
    if (isTikTokInstalled(this)) {
        try {
            var uri = Uri.parse("snssdk1233://aweme/detail/$videoId")
            var intent = Intent(Intent.ACTION_VIEW, uri)
            if (packageManager.resolveActivity(intent, 0) != null) {
                startActivity(intent)
            } else {
                uri = Uri.parse("tiktok://video/$videoId")
                intent = Intent(Intent.ACTION_VIEW, uri)
                startActivity(intent)
            }
        } catch (e: ActivityNotFoundException) {
            Toast.makeText(this, "跳转TikTok失败", Toast.LENGTH_SHORT).show()
        }
    } else {
        Toast.makeText(this, "您尚未安装TikTok", Toast.LENGTH_SHORT).show()
    }
}

内容的提问来源于stack exchange,提问作者Rastko Stamenkovic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 05:54:04