文章目录

  • 前置代码
  • 直接拨打电话
  • 跳转页面拨打电话
  • 反射方式拨打电话

前置代码


// 获取界面上输入的电话号码
val phoneNumber = findViewById<EditText>(R.id.text_phone_number).text.toString()
val uri = Uri.parse("tel:$phoneNumber")

直接拨打电话


Log.i(localClassName, "###直接拨打电话")
val intent = Intent(Intent.ACTION_CALL, uri)
// 判断权限,针对不同的版本,有的动要态再获取权限
if (ContextCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) == PackageManager.PERMISSION_GRANTED) {intent.action = Intent.ACTION_CALLintent.data = uristartActivity(intent)
} else {ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.CALL_PHONE), 1)
}

跳转页面拨打电话


Log.i(localClassName, "###跳转拨打电话")
val intent = Intent(Intent.ACTION_DIAL, uri)
startActivity(intent)

反射方式拨打电话


Log.i(localClassName, "###反射方式拨打电话")
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.P) {Toast.makeText(this, "该方法不支持Android9(sdk28)以上版本", Toast.LENGTH_LONG).show()return
}
try {// 首先拿到TelephonyManagerval telManager = getSystemService(TELEPHONY_SERVICE) as TelephonyManager// 通过反射取得方法,这里的用法和java有所不同,要多注意val method: Method = telManager.javaClass.getDeclaredMethod("getITelephony")method.isAccessible = trueval obj = method.invoke(telManager)val mt = obj.javaClass.getMethod("call", String().javaClass, String().javaClass)mt.isAccessible = true// 修改方法后开始拨打电话mt.invoke(obj, packageName + "", phoneNumber)Log.i(localClassName, "###反射方式拨打电话成功")
} catch (e: Exception) {Log.i(localClassName, "###反射方式拨打电话失败")e.printStackTrace();
}

Android 三种拨号方式(kotlin)相关推荐

  1. android 三种定位方式

    最近在看android关于定位的方式,查了很多资料,也做了相关实验,在手机上做了测试,下面总结: 一共有三种定位方式,一种是GPS,一种是通过网络的方式,一种则是在基于基站的方式,但是,不管哪种方式, ...

  2. android 三种定位方式 介绍

    三种获取手机的位置的方式_20 1.网络定位(network).前提是必须连上网络:wifi.3G.2G: 获取到IP地址 例如:传美版QQ,彩虹版QQ,珊瑚虫版QQ,就有一个功能显示对方的IP: 根 ...

  3. android三种载入图片方式

    package smalt.music.utils;    import android.graphics.Bitmap;  import android.graphics.BitmapFactory ...

  4. Kotlin实战练习——自定义圆形图片三种实现方式

    Kotlin实战练习--自定义圆形图片三种实现方式 前言 如今Kotlin越来越重要,本人也开始了Kotlin的学习.为了检测学习效果,加深学习印象,同时回顾一下以前的一些知识点,决定从写一个自定义圆 ...

  5. android圆形点击效果,Android 三种方式实现自定义圆形页面加载中效果的进度条

    [实例简介] Android 三种方式实现自定义圆形页面加载中效果的进度条 [实例截图] [核心代码] ad376a86-a9aa-49bc-8cea-321bcff2c0c3 └── AnimRou ...

  6. Android的surface的三种工作方式

    注:文章内容是基于kitkat进行的粗线条分析,做为学习过程中的小结. Surface的三种使用方式 Native层的Surface工作方式有:仅在Proxy端.Proxy和Service端协同.仅在 ...

  7. python中if brthon环境安装包_Ant、Gradle、Python三种打包方式的介绍

    今天谈一下Androdi三种打包方式,Ant.Gradle.Python. 当然最开始打包用Ant 很方便,后来转Studio开发,自带很多Gradle插件就用了它,然后随着打包数量越多,打包时间成了 ...

  8. 百度地图导航的接入(包含三种选择方式驾车、公交、步行)

    百度地图导航的接入(包含三种选择方式驾车.公交.步行) 步骤 1.下载百度的sdk(下载地址:http://lbsyun.baidu.com/sdk/download) 勾选下载"检索功能& ...

  9. xml的三种解析方式

    本篇博客重点介绍Android中三种解析XML的方式,包括PULL.SAX.DOM,当然不止这些,还可以用第三方的jar包提供的解析,只是这三种在Android中比较常用吧.再顺便介绍一下Androi ...

最新文章

  1. 导入自定义模块model
  2. linux服务器性能监控命令汇总之free命令(四)
  3. 谈一谈CMU导师和学生的互动方式
  4. 享学金三银四一线大厂面试专题学习笔记
  5. 批量裁剪GIS数据(包含GDB,MDB,Shp)
  6. 泰勒级数 快速傅里叶变换(Fast Fourier Transfor FFT)
  7. 诗与远方:无题(二十一)
  8. mysql 怎样链接jdbc_jdbc链接mysql
  9. linux 软硬连接
  10. 软件测试 -- 单元测试,集成测试,系统测试的侧重点
  11. Kettle下载与安装教程【保姆版】
  12. passport2刷android,让人久等了! 安卓版黑莓Passport2将至
  13. 隆重推荐:公民税权手册
  14. 关于打印机驱动无法装载的问题
  15. 别说我没告诉你,真心推荐4款免费动画制作软件
  16. python 创建线程
  17. Linux UVC driver 独立交叉编译记录
  18. js获取元素样式-行内样式、内部样式、外部样式
  19. 临摹 x 科幻 x AI | MixTalk S01-09
  20. 程序猿的24个段子,超级实用和搞笑哦!!!

热门文章

  1. python爬虫应聘信息_python爬虫获取拉钩网在线搜索招聘信息(超实用!)
  2. 女神异闻录5(p5)系统拆解
  3. Python while语句2021-08-27
  4. 2018清明假期旅游预测报告:全国游客人次预计破亿
  5. Android应用内展示office文件--腾讯浏览服务(TBS)
  6. Python IDLE 如何设置清屏功能(清屏快捷键,亲测可用)
  7. 登出/退出java_Servlet代码
  8. app应用程序的好处
  9. linux文件管理命令ppt,linux命令以及文件管理.ppt
  10. 华为mate40pro有没有鸿蒙,mate40pro不能升级鸿蒙吗?我啥也不懂,完蛋了