原文博客:Doi技术团队 链接地址:https://blog.doiduoyi.com/authors/1584446358138 初心:记录优秀的Doi技术团队学习经历 读取短信和联系人经常会用到...短信 开始切入正题,先说短信,要从数据库中获取数据,就要了解其结构 短信数据库在data-->data中的下面路径 ?...data表,这个表中的“data1”列几乎包含了我们想要的数据,但是如何通过分类提取,第四列的代号说明了data1数据的类型,这些代号在mimetypes表中有对应的说明,要找到这些数据,又要通过raw_contact_id..."/> 如过是Android 6.0以上的版本还要动态获取权限 获取联系人的效果图 ?...来获取_ID和DISPLAY_NAME * _ID 该联系人的索引 * 通过这个ID可以在ContactsContract.CommonDataKinds.Phone.CONTENT_URI
如何用kotlin开发同时支持iOS和Android的库 虽说kotlin-native可以支持链接到c,java,objective-c等语言,甚至可以进行原生开发,但是在使用的过程中并不友好,配置繁琐且...通过kotlin构建库不失为一个好办法,可以将iOS和安卓共有的参数、model和通用方法用kotlin写成库,并分别打包给两个平台使用,在未来应该是一个可行性的方案。...由于现在kotlin-native还是没有推出正式版,不建议马上通过这种方式来开发项目,这里只是给未来的开发提供了一种可能性。...、设置项目的GroupId、artifactId、 Version信息 四、选择gradle环境,如果选择本地的配置,可以省去配置的时间 五、配置项目名称和存放的路径,并Finish 写Demo代码 在根目录新建一个名为.../gradlew assemble 就会在项目根目录的 build/libs文件夹下生成名为 leacode.kotlin-1.0-SNAPSHOT.jar 可以用于导入安卓项目使用 打iOS的framework
当前我们常用的 Android 开发语言为 Kotlin,日常的项目也基本是 Kotlin 和 Java 共存。...那么 Android 编译的时候会如何编译 Kotlin 呢,本篇文章我会对 Kotlin 编译的触发流程做一个介绍。...Kotlin 的工程里就包括了 KGP 和 Kotlin compiler 的源码。...execute 的入参和 JavaCompile 一样也是 inputChanges 对象。里面包括了变化的 Kotlin 文件和 Jar 文件。...lastBuildInfo 是从 build/kotlin 目录下面读取的 last-build.bin 文件,主要是记录了上次编译开始的时间戳。
引言Android开发是移动应用开发领域中的一个重要方向,而Kotlin作为一种现代的、表达力强大的编程语言,逐渐成为Android开发的首选语言。...本教程将详细介绍如何使用Kotlin和Android Studio开发一个简单的Android应用,包括项目的创建、界面设计、代码编写以及运行应用。...步骤1:安装Android Studio和配置环境首先,确保你的系统中已经安装了最新版本的Android Studio。你可以从官方网站下载并按照安装指南进行安装。...安装完成后,打开Android Studio,确保SDK和其他必要的组件已成功安装。创建或导入一个新的Android项目。步骤2:创建新的Android项目打开Android Studio。...你已经成功创建并运行了一个简单的Android应用程序,使用了Kotlin语言和Android Studio进行开发。这只是一个简单的入门示例,你可以根据需要扩展应用,添加更多功能和界面元素。
2.0版本实现内存监控的基本原理和以往版本差异不大,比较重要的一点变化是2.0版本使用了自己的hprof文件解析器,不再依赖于HAHA,整个工具使用的语言也由Java切换到了Kotlin。...本文结合源码对2.0版本的内存泄漏监控基本原理和hprof文件解析器实现原理做一个简单地分析介绍。...2.1 检测实现 自动检测的对象包含以下四类: 销毁的Activity实例 销毁的Fragment实例\ 销毁的View实例 清除的ViewModel实例 另外,LeakCanary也会检测 AppWatcher...registerResumedActivityListener(application) addDynamicShortcut(application) disableDumpHeapInTests() } 2.1.2 如何检测泄漏...至于泄漏的对象的识别原理和之前的版本并没有差异。 作者:vivo 互联网客户端团队-Li Peidong
安卓短信转发qq邮箱 简介 准备工作 安装android开发环境 理解AS的工程结构和管理工具 管理工具Gradle AS的工程结构 编程语言 怎么利用好github 怎么找到可用的仓库 怎么利用好仓库的...短信的接收和验证码的提取 邮件发送 准备工作 安装android开发环境 archlinux安装androidStudio 理解AS的工程结构和管理工具 通过对开发工具的了解,你能更加快速的编写代码,更好的理解其工作原理...下面给出了几个介绍的链接 如何通俗地理解 Gradle android配置Gradle AS的工程结构 AS的项目结构 编程语言 kotlin 现在kotlin已经凭借自己良好的特性取代Java成为开发安卓首推的开发语言...我在github上搜索到一个较为符合的仓库是sms-backup-plus,这个仓库的代码用到了信息和邮箱,但是是读取已经接收到的信息,邮箱也用的是国外的账户,国内上不了。...app一点开就闪退的话很可能是没有给app权限(比如读取短信,连接网络) 10个错误有9个都是权限和版本问题 TSC frequency mismatch between VM 解决方法 生成apk文件
但实际上,它能够执行恶意远程命令、信息窃取、未经授权的SMS发送和URL转发以及点击或广告诈骗。同时,它还能够在未经许可的情况下,给受害者注册高级短信订阅服务。...Kotlin是一个基于JVM的新型编程语言,由 JetBrains 开发。它被描述为拥有以下几个优点: 比Java更简洁,大大减少了样板代码的数量; 比Java更安全,能够静态检测常见的陷阱。...如:引用空指针; 可以利用JVM、Android和浏览器的现有库进行互操作; 兼容很多现有工具,因为它能够选择任何Java IDE或从命令行构建(Android Studio 3.0提供了帮助用户使用Kotlin...可以在将Java代码粘贴到Kotlin文件中时即时转换所有Java文件或代码片段。 谷歌公司于2017年5月宣布 Kotlin为编写Android应用程序的主流语言之一。...自Kotlin发布以来,17%的Android Studio项目开始使用该编程语言。诸如Twitter、Pinterest和Netflix这样的顶级应用程序都是使用Kotlin编写的。
我们先来看一个简单的例子,一个应用只有一个activity并且不支持全屏,这个activity的onStart和onStop方法就决定了这个应用是打开的还是关闭的。...application类的onCreate方法首先需要订阅的,这样才能保证每次应用进入或退出前台的时候能收到通知。...论应用如何启动 到目前为止,我们知道了如何检测应用是什么时候被打开或者关闭的,但是我们还不知道应用是如何被打开的。...在这段代码中,我在application类中添加了一个枚举类型变量用来记录应用是如何被打开的。这个建立在上一个例子的基础之上,所以我们打印一下日志,来看看应用是什么时候被打开的和如何被打开的。...现在你不仅可以检测应用什么时候启动或关闭的,还可以检测出它是如何启动的。 最后,再次感谢翻译人员以及原作者
在 Kotlin 中,async 和 await 是用于并发编程的关键工具。它们通常用于协程中,以实现异步编程模式。...通过使用 async 和 await,你可以编写简洁的代码来处理并行任务,还可以控制任务的执行顺序来实现串行任务。 并行任务 async 会启动一个新的协程,并在其中异步执行指定的代码块。...下面是一个简单的例子,演示如何使用 async 和 await 来并行执行两个异步任务: import kotlinx.coroutines.* fun main() = runBlocking {...当所有任务完成时,await 收集它们的结果。 串行任务 尽管 async 和 await 可以用于并行处理,但它们也可以用于顺序执行任务。...runBlocking:用来在主函数中启动协程,这在演示和划小范围测试中很有用,但在应用中,应使用更合适的结构如 launch 或 CoroutineScope。 END 点赞转发,让精彩不停歇!
DialogFragment隐藏导航栏 在 Android 中,使用 DialogFragment 显示对话框时,如果您希望隐藏系统导航栏(如状态栏和导航键),可以通过设置相关的系统 UI 标志来实现。...以下是一个完整的例子,展示了如何在 DialogFragment 中隐藏系统导航栏(使用 Kotlin): import android.os.Bundle import android.view.View...这种方法允许您的 DialogFragment 在显示时全屏,并隐藏状态栏和导航栏。...Dialog中隐藏导航栏 在 Android 中,如果想在 Dialog 中隐藏系统导航栏(包括状态栏和底部的导航键),可以通过设置窗口属性来实现。...let { … }: 为了确保 window 不为 null,使用 Kotlin 的安全调用操作符 ?. 来使用窗口对象。 setLayout 方法将对话框设置为全屏。
io.reactivex.rxjava2:rxandroid:2.0.2' implementation 'io.reactivex.rxjava2:rxjava:2.1.10' Github地址 使用 延迟执行 Kotlin...TimeUnit.MILLISECONDS) .observeOn(AndroidSchedulers.mainThread()) .subscribe { } 多线程 常用的方式是分线程中处理数据...,主线程中使用数据生成页面 Kotlin Observable .create> { source -> var treeList
从 Room 2.1 版本之后,开发者们可以通过定义 suspend DAO 函数来使用 Kotlin 协程了。...在我们为 Room 添加协程的支持期间,我们遇到并解决了在协程模型和 Android SQL API 中没想到的一些问题。在本篇文章中,我们会向您阐述我们遇到的这些问题,以及我们的解决方案。...的 SQLite 事务受制于单个线程 上述代码中的问题在于 Android 的 SQLite 事务是受制于单个线程的。...中 SQLite 的线程限制是合理的,这在 Kotlin 还没出现时已然如此设计了。...直接取消 Android 线程对 SQLite 事务的限制是不可行的,因为我们希望提供一个向后兼容的解决方案,而上述这些方法的组合最终让我们在使用协程和 Fluent API 的解决方案中发挥了创造性。
欢迎点击上方"AntDream"关注我,每天进步一 在Kotlin中,if和let虽然有时候用来处理相似的情景,但它们实际上是用于不同的场景并具有不同的性质。...下面我们来详细对比一下这两者的区别: if 语句 if 是一种控制结构,用于条件判断。它可以有一个或多个条件分支,并且可以返回值。if 语句在Kotlin中类似于其他语言的if语句。...返回值:if表达式可以有返回值,这使它与Java中的if语句有所不同,因为在Kotlin中if是有返回值的表达式。 嵌套和多分支:可以嵌套使用,并支持多分支 (else if)。...let 函数 let 是Kotlin标准库中的一个扩展函数,通常用于对非空对象执行某些操作。它的主要目的是避免显式的null检查,并且作用域内将对象以it的形式暴露出来。...选择使用if还是let,取决于你的具体需求和场景。在不需要null安全或作用域控制的简单条件判断中,使用if更为直观;在处理可空类型并需要对非空值进行操作时,使用let则更为简洁和优雅。
Maven 如何编译 java 和 kotlin 编码的混合项目 一、前提 应用程序同时使用java和kotlin两种开发语言,则必须在 Java 编译器之前调用 Kotlin 编译器。...二、解决方案 根据 maven 的方式,则需要在 maven-compiler-plugin 之前运行 kotlin-maven-plugin,因此我们要确保 pom.xml 文件中的 kotlin 插件位于...代码是在kotlin目录下,而不是java目录下,这样编译出来的代码会发现 kotlin 的源码无法正常显示。...原因是Maven默认只允许指定一个主Java代码目录和一个测试Java代码目录。 这时候就需要 build-helper-maven-plugin 插件来解决了。...的源码也能正常显示了,问题解决。
Android程序员把“场景”抽象为Context类,他们认为用户和操作系统的每一次交互都是一个场景....: _id:短信序号,如100 address:发件人地址,即手机号,如+8613811810000,这里需要注意的是手机号是否加+86,可以加上86和不加86分别测试下 person:发件人,如果发件人在通讯录中则为具体姓名...,1MMS_PROTO彩信 read:是否阅读0未读,1已读 status:短信状态-1接收,0complete,64pending,128failed type:短信类型1是接收到的,2是已发出 body...:短信具体内容 读取短信内容的uri为: Uri uri = Uri.parse(“content://sms”); //读取所有短信 Uri uri = Uri.parse(“content://sms.../inbox”); //读取收件箱短信 2022-11-06 1.uts uts,全称 uni type script,是一门跨平台的、高性能的、强类型的现代编程语言。
在 Kotlin 中,== 和 === 是两个不同的操作符,它们用于比较两个值是否相等,但它们的行为和用途有所不同。 == 操作符: == 是一个相等性比较操作符,用于比较两个变量的值是否相等。...在 Kotlin 中,=== 通常用于特定的场景,比如在某些情况下需要确保对象的唯一性。...其他常见比较操作符 在 Kotlin 中,除了 == 和 === 这两个用于比较相等的操作符外,还有其他几个比较操作符,它们用于不同类型的比较: 1、 !=(不等于): 用于比较两个值是否不相等。...5、 ranges(范围): Kotlin 支持使用 .. 操作符创建范围,例如 1..10 表示从 1 到 10 的整数范围。 范围可以与 in 和 !in 操作符一起使用,用于范围比较。...了解这些比较操作符和方法可以帮助你编写更灵活和强大的 Kotlin 代码。在实际编程中,选择正确的比较操作符或方法取决于你的具体需求和上下文。 END 点赞转发,让精彩不停歇!
第13章 使用 Kotlin 和 Anko 的Android 开发 ---- 《Kotlin极简教程》正式上架: 点击这里 > 去京东商城购买阅读 点击这里 > 去天猫商城购买阅读 非常感谢您亲爱的读者...长久以来,Android视图都是用 XML 来完成布局的。这些 XML可重用性比较差。同时在运行的时候,XML 要转换成 Java 表述,这在一定程度上占用了 CPU 和耗费了电量。...视图的成员变量和属性的数据绑定。...那么要如何才能在Kotlin的环境中使用ButterKnife呢? 在早些时候,ButterKnife的作者已经帮我们想好解决方案了,那就是——KotterKnife,见名知意。...不使用 lateinit 则需要声明可空类型并且有额外的空安全检测操作。
协程的挂起、执行和恢复过程到底是怎么样的? 协程(Coroutine)的挂起和恢复机制是其高效管理并发性的核心。这些过程涉及多个关键步骤,包括状态和上下文的保存、释放线程控制权、以及恢复时的通知等。...2.2 Continuation Kotlin中的挂起函数实质上会被编译器转换成带有回调的 Continuation 对象。...切换到其他线程执行 4.1 恢复协程条件满足 当挂起的条件满足(例如 delay 到期,或者异步任务完成),调度器会收到执行恢复逻辑的通知。...以下是一个简单的示例,展示了协程如何在挂起后切换到不同线程并恢复到主线程: import kotlinx.coroutines.* fun main() = runBlocking { withContext...总结 综上所述,Kotlin 协程在挂起和恢复过程中,通过调度器实现线程的切换和任务调度: 挂起点保存当前状态由Continuation管理。 调度器控制挂起后的线程控制权交还。
但还有一种验证码和此种情况不同,那就是手机验证码,比如 PC 上需要输入手机号,然后短信验证码需要发到手机上,然后再在 PC 上把收到的验证码输入即可通过验证。...那这里关键的部分其实就是怎样完成这两个步骤: 如何监听手机收到了短信 如何将手机短信转发到想要的位置 这两个步骤缺一不可,而且都需要在手机上完成。...“注意:这里我们仅仅简单介绍基本的思路,不会完全详细展开介绍具体的代码实现,感兴趣的话可以自行尝试。 ” 首先如何监听手机收到了短信呢?...在 Android 开发中,整体就分为三个必要环节: 注册读取短信的权限:在一个 Android App 中,读取短信是需要特定的权限的,所以我们需要在 Andriod App 的 AndroidManifest.xml...中将读取短信的权限配置好,比如接收短信的权限配置如下: android:name="android.permission.RECEIVE_SMS"></uses-permission
QQ登录保护的安全机制: 当我们开启了“登录保护”,盗号者登录QQ输入正确的密码,即使更换IP骗过了安全检测系统,会发现仍然需要验证密保手机短信里的数字验证码才能真正登录成功,由于手机随时带在我们的身边...2、绕过安全检测 被盗号的同学表示并未收到短信验证码,当时我就在想:难道攻击者找到某种途径绕过了腾讯的安全检测? 首先,绕过异地登录检测可以通过修改IP地址来实现。上一期:传送门。...那么接下来只需要绕过新设备的检测就可以了,那么QQ是如何判断是否是新设备呢。 你要是觉得QQ判断新设备有这么简单,那就太天真了。如果真有这么简单,QQ绝不会到现在还能安然无恙的运营。...7.0之后读取 /sys/class/net/wlan0/address 也获取不到了。 另外,Android 9.0及以上版本默认使用了“随机MAC地址”。...由于盗号者不知道QQ是依据哪些信息来生成ID的,也不知道生成ID的算法是怎样计算的,所以无法伪造成原设备ID。 总结 那么为什么那些被盗QQ的同学没有收到短信验证呢?