Jetpack Compose 中的Deep Linking — Android

news2025/1/15 19:49:37

Jetpack Compose 中的Deep Linking — Android

在本文中,我们将学习如何在 Jetpack Compose 中轻松实现深度链接。
deep linking

什么是深度链接?

深层链接允许用户直接从外部来源(例如网站或其他应用程序)导航到应用程序内的特定内容。

添加依赖性

app/build.gradle.kts并添加导航依赖项。

dependencies {
    implementation("androidx.navigation:navigation-compose:2.5.3")
}

现在让我们回到MainActivity.kt并设置导航。

步骤1
创建navController.

val navController = rememberNavController()

第2步
创建NavHostScreen

NavHost( 
    navController = navController, 
    startDestination = "home"
 ) { 

    composable( 
        route = "home"
     ) { 
        // ...
     } 
}

现在我们需要为应用程序定义统一资源标识符 (URI) 。基本上,URI是指向我们应用程序的链接。当用户打开此链接时,它将被重定向到应用程序。这是我的:

val uri = "https://www.ad-coding.com"

我们还定义一个指向主屏幕的深层链接并传递参数。为此,我们需要定义一个列表navDeepLink并使用backStackEntry来获取参数。

composable(
    route = "home",
    deepLinks = listOf(
        navDeepLink {
            uriPattern = "$uri/{id}"
        }
    )
) { backStackEntry ->
    val homeNumber = backStackEntry.arguments?.getString("id")

    Box(
        modifier = Modifier.fillMaxSize(),
        contentAlignment = Alignment.Center
    ) {
        Text(text = homeNumber ?: "No number")
  }
}

现在我们需要将URI链接到应用程序。打开AS“工具” 选项卡并选择“应用程序链接助手”。

App Links tools

打开URL Mapping Editor > 单击 + 按钮并 添加我们之前在Host字段中定义的URI,然后单击OK。

links edit ui
如果我们点击我们创建的主机,我们可以看到它在AndroidManifest.xml.

  • Action.VIEW— 这意味着可以启动该组件来查看特定内容。
  • Category.DEFAULT— 表示该组件是一个典型的组件,可以默认启动。
  • Category.BROWSABLE— 表示该组件可以从 Web 浏览器启动。
  • android:scheme— https, 是处理 URL 的协议。
  • android:hostwww.ad-coding.com, 是基本链接。
    AndroidManifest intent config

我们还要检查URL是否映射到MainActivity.
links test

我们需要做的最后一件事是测试URI。单击测试应用程序链接

test target
让我们传递URI以及末尾用/. 之后运行测试,它应该是成功的。
url map

参考链接

https://medium.com/@daniel.atitienei/deep-linking-in-jetpack-compose-android-f9a70d432896

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/501488.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

联想笔记本系统更新中断后变成蓝屏怎么U盘重装系统?

联想笔记本系统更新中断后变成蓝屏怎么U盘重装系统?有用户使用的联想笔记本电脑在系统更新的过程中,因为自己进行了一些操作,导致系统更新中断了,重启系统之后变成了蓝屏的情况。那么这个时候怎么去通过U盘重装系统来恢复电脑使用…

2d游戏人物动作实现(C语言)

没有接触制作小游戏前,感觉做游戏很不可思议,游戏里的人物是怎么移动的,怎么攻击,释放技能。。。。。。现在逐渐了解到之后,发现2d游戏人物的动作更多是图片的拼接,动作是否精细,由这个动作的帧…

第四十二章 Unity 下拉框 (Dropdown) UI

本章节我们介绍下拉框 (Dropdown),我们点击菜单栏“GameObject”->“UI”->“Dropdown”,然后调整它的位置,效果如下 其实它的本质就是一个下拉列表,然后选择列表中的一个选项而已。大家在很多网页中应该可以看到类似的UI元…

asp.net+sqlserver学生学籍管理系统

1.系统登录模块:为了保证系统的安全性和保密性,便于用户的管理,对用户设置权限。 界面上需要输入用户名、密码、验证码以及用户类型。 用户类型:普通用户和管理员用户。 2.用户信息管理模块&…

Solr(4):Solr索引库说明及创建

1 索引库概述 索引库类似于mysql的数据库,所以如果要使用Solr必须创建一个索引库才能使用 2 使用solr管理页面去创建【不推荐】 2.1 打开solr的管理页面 2.2 点击add Core name:自定义名字 建议和instanceDir目录保持一样instanceDir:实例名…

两大巨头强强联手,为亿万旅行者提供完美旅程

‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 这个“五一”你买到票了么? 今年五一火爆程度可谓“盛况空前”,4月28号(放假前一天)上海单日通往全国所有车站的车票售罄,这是115年以来首次出现这种情况。不仅是上…

javaScript---设计模式-提高复用性

目录 1、提高复用性的设计模式 2、基本结构与应用示例 2.1 享元模式 2.2 桥接模式 2.3 模板方法模式 2.4 JS的组合与继承 提高复用性的目的:①遵循DRY(Dont Repeat Yourself)原则;②减少代码量,节省开销 什么是好的复用…

Android安装apk出现 “安装包无效”或“安装包不兼容”的解决方案

Android 安装apk出现“安装包无效”或“安装包不兼容”解决方案 1. 问题出现2. 配置 build.gradle3. 生成Signed APK 1. 问题出现 使用Android Studio安装apk到手机一切正常,但是分享出去出现安装apk出现“安装包无效”或“安装包不兼容”问题 这种情况需要我们设…

MySQL之从一条记录说起 【InnoDB 记录结构下篇】

前言 本文章收录在MySQL性能优化原理实战专栏,点击此处查看更多优质内容。 本文摘录自 ▪ 小孩子4919《MySQL是怎样运行的:从根儿上理解MySQL》 上一篇文章讲了InnoDB有Compact、Redundant、Dynamic、Compressed4种⾏格式,其中主要讲了Com…

Java——按之字形顺序打印二叉树

题目链接 牛客在线oj题——按之字形顺序打印二叉树 题目描述 给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直这样交替) 数据范围:0≤n≤1500, 树上每个…

深入浅出字符编码

本文对应视频链接: 深入浅出字符编码 什么是编码格式 从一个小问题引入 我们在学习C语言的时候,有一道必做的题目是将大写字母转换成小写,相信有点基础的同学都能不加思索的写出下面的代码: char toLower(char upper){if (up…

大数据Doris(十四):数据模型的选择建议和列定义建议

文章目录 数据模型的选择建议和列定义建议 一、数据模型的选择建议 1、Aggregate数据模型选择<

如何快速给出解释——正交矩阵子矩阵的特征值的模必然不大于1

Memory 首先快速回忆一下正交矩阵的定义&#xff1a; A为n阶实矩阵&#xff0c;且满足A‘AE或是说AA’E&#xff0c;那么A为正交矩阵。 &#xff08;啊&#xff0c;多么简洁的定义&#xff09; 其次快速想到它的性质&#xff1a; ① 实特征值必然 或 其他复数…

qt几种常见安装包制作工具-Qt Installer Framework

Qt Installer Framework&#xff08;简称&#xff1a;QtIFW&#xff09;概述 QtIFW提供了一组工具和实用程序&#xff0c;可以一次性创建安装程序&#xff0c;并在所有支持的桌面Qt平台上部署它们&#xff0c;而无需重写源代码。安装程序将在运行它们的平台上具有本机外观和感…

第四节 特殊权限SUID、SGID、SBIT

1.Set UID 简称 SUID 简称 SUID 限制与功能&#xff1a; SUID权限仅对二进制程序有效&#xff1b; 执行者对于该程序需要具有x的执行权限&#xff1b; 本权限仅在执行该程序的过程中有效&#xff1b;  执行者将具有该程序拥有者的权限 特殊权限SUID、SGID、SBIT 例&am…

【分布族谱】Zipf分布及其Python可视化

文章目录 zipf分布简介zipfian和zipf对象zipf分布到zeta分布的变化情况分布族谱图 zipf分布简介 #mermaid-svg-mG901pJXpTYFT7Bk {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-mG901pJXpTYFT7Bk .error-icon{fill:…

Spring Boot 如果防护 XSS + SQL 注入攻击

Spring Boot 如果防护 XSS SQL 注入攻击 XSS跨站脚本攻击XSS漏洞介绍XSS漏洞分类防护建议 SQL注入攻击SQL注入漏洞介绍防护建议mybatis是如何做到sql预编译的呢 SpringBoot中如何防止XSS攻击和sql注入创建Xss请求过滤类XssHttpServletRequestWraper把请求过滤类XssHttpServlet…

使用fork函数创建一个进程

pid_t fork(void) fork函数调用成功&#xff0c;返回两次 &#xff08;1&#xff09;返回值为0&#xff0c;代表当前进程是子进程 &#xff08;2&#xff09;返回值为非负数&#xff0c;代表当前进程是父进程 &#xff08;3&#xff09;调用失败&#xff0c;则返回-1 代码如…

【人工智能概论】 K折交叉验证

【人工智能概论】 K折交叉验证 文章目录 【人工智能概论】 K折交叉验证一. 简单验证及其缺点1.1 简单验证简介1.2 简单验证的缺点 二. K折交叉验证2.1 K折交叉验证的思路2.2 小细节2.3 K折交叉验证的缺点2.4 K折交叉验证的代码 一. 简单验证及其缺点 1.1 简单验证简介 简单验…

join 语句使用

目录 前言 创建数据 知识点补充 Join算法Index Nested-Loop 小结&#xff1a; Join算法Block Nested-Loop join_buffer放不下驱动表情况 小结&#xff1a; 小表是什么&#xff1f; 总结&#xff1a; 参考内容 前言 在实际开发中&#xff0c;我们一般会有两类问题&a…