如何在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
相关产品推荐
相关产品推荐

