Android入门篇(四):自动拨打电话、手动拨打电话

一、前言
最近在做的项目需要用到自动拨号的这一功能,17年写了一个,最近拿出来用发现不能使用了,后面查资料据说是因为Android 6(api23)之后对安全权限这一块进行进一步的加强,所以原来的一些涉及到安全方面的一些功能都不能照搬原来的代码。由于本文归纳为入门篇,所以本文主要介绍用Intent来实现功能,另外一种基于反射的拨号以后再和大家分享。
话不多说先来两张结果图:
这是一个简洁的APP界面


这是自动拨打电话的结果图(如果是双卡双待的同学注意这里会优先默认是你的卡1拨打)

二、实现过程
第一步:新建一个项目(不会的参考前文);
第二步:添加静态权限;
打开Androidmanifest.XML文件,在文件中加入权限代码:

<uses-permission android:name="android.permission.CALL_PHONE" />

具体图例步骤:
第三步:修改逻辑代码;
打开JAVA文件里面的MainActivity(本文是新建时默认,如非新建或自行修改过即找ACTIVITY对应的java文件)修改代码如下:

public class MainActivity extends AppCompatActivity {private TextView tev;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);tev = findViewById(R.id.txv1);//设置号码String phonenum = "10086";//拨打电话callPhone(phonenum);tev.setText(phonenum);}public void callPhone(String phoneNum){//android6版本获取动态权限if (Build.VERSION.SDK_INT >= 23) {int REQUEST_CODE_CONTACT = 101;String[] permissions = {Manifest.permission.CALL_PHONE};//验证是否许可权限for (String str : permissions) {if (this.checkSelfPermission(str) != PackageManager.PERMISSION_GRANTED) {//申请权限this.requestPermissions(permissions, REQUEST_CODE_CONTACT);return;}}}//如果需要手动拨号将Intent.ACTION_CALL改为Intent.ACTION_DIAL(跳转到拨号界面,用户手动点击拨打)Intent intent = new Intent(Intent.ACTION_CALL);Uri data = Uri.parse("tel:" + phoneNum);intent.setData(data);startActivity(intent);}}

图例:

好啦,本文到这里就结束啦,很简单的一个Demo有需要的朋友拿去自行修改,我这里没有用UI就没有写UI。

Android入门篇(四):自动拨打电话、手动拨打电话相关推荐

  1. FPGA基础入门篇(四) 边沿检测电路

    FPGA基础入门篇(四)--边沿检测电路 一.边沿检测 边沿检测,就是检测输入信号,或者FPGA内部逻辑信号的跳变,即上升沿或者下降沿的检测.在检测到所需要的边沿后产生一个高电平的脉冲.这在FPGA电 ...

  2. kotlin开发Android入门篇一

    基础篇:基本类型及方法的定义 kotlin介绍:Kotlin是一个基于JVM 的新的编程语言,由JetBrains 开发. Kotlin可以编译成Java字节码,也可以编译成JavaScript,方便 ...

  3. Android 入门篇(一)环境搭建

    关于学习方向这一块,我想了很长时间,安卓在未来的几年里肯定不如之前火爆,但是我既然一开始在这个方向上做了不少的努力,那么就没有理由选择放弃,这就是我的思维方式吧.在我刚入门的时候想过很多东西,也有很多 ...

  4. Android入门教程四十六之ViewFlipper(翻转视图)的基本使用

    本节给大家带了的是ViewFlipper,它是Android自带的一个多页面管理控件,且可以自动播放! 和ViewPager不同,ViewPager是一页页的,而ViewFlipper则是一层层的,和 ...

  5. Android入门篇

    1.介绍Android 1.1.Android相关的基础知识 Android是基于Linux的开源的操作系统,在2008年由Google率先推出:Android与IOS操作系统最大的区别就是IOS主要 ...

  6. 插入始终是1_C++入门篇(四十四),链表查询与结点插入

    链表的查询 对链表进行各种操作时,需要先对某一个结点进行查询定位.假设数据中没有数据相同的结点,我们可以编写这样一个函数,查找到链表中符合条件的结点,我们在四十三篇的代码中声明搜索结点函数原型: 在底 ...

  7. Android 入门(四) | Intent 实现 Activity 切换

    文章目录 Intent 显式 Intent 定义两个 xml 文件 android:orientation match_parent 和 wrap_content Intent函数 定义两个 Acti ...

  8. Android入门篇二:使用意图在Activity之间传递数据

    首先,在这里稍微介绍一下意图(Intent)的概念: Intent(意图)主要是解决Android应用的各项组件之间的通讯. Intent 负责对应用中一次操作的动作.动作涉及数据.附加数据进行描述, ...

  9. kotlin开发Android入门篇八Kotlin开发Android的基本使用

    基础篇:Kotlin开发Android的基本使用 使用AndroidStudio3.0及以上开发Kotlin在新建项目中勾选这个选项则会默认开发语言为Koltin,然后再gradle(Project的 ...

最新文章

  1. 计算机话筒接口,电脑麦克风插口是哪个哪位知道?
  2. CISCO SCE 第三部分 SCE平台的升级
  3. 汇编语言重写除零中断
  4. JavaScript websocket 实例
  5. 从土地利用规划到国土空间规划的一些思考
  6. android原生ios,Windows Phone的原生iOS/Android应用程序
  7. 医院耗材管理系统开发_4
  8. iOS UILabel字体设置
  9. CImageList用法介绍
  10. c51单片机蜂鸣器汇编语言,51单片机控制蜂鸣器播放5首歌曲汇编程序
  11. ShareSDK分享 和新浪登陆冲突解决方法
  12. TensorFlow 2.10 Unable to register cuBLAS factory Attempting to register factory for plugin cuBLAS方案
  13. 站在商业、技术与人文三叉路口的实体书店
  14. opencv不规则掩膜裁剪图片
  15. mysql 历史数据迁移,MySQL 历史数据表迁移方法
  16. JAVA 中级 ARRAYLIST - ARRAYLIST上使用泛型
  17. 阿里云视频服务之点播服务
  18. 关于UI使用ContentSizeFitter组件同步立即响应
  19. ensp——防火墙安全策略配置实验
  20. Photoshop中的填充功能

热门文章

  1. Til the Cows Come Home(dijkstra)
  2. Matlab进行gnss用户坐标计算,论文推荐 | 嵇昆浦,沈云中:含缺值GNSS基准站坐标序列的非插值小波分析与信号提取...
  3. 曹图强:思科正成为全数字化转型基石
  4. 3d游戏场景建模设计师需要学哪些软件?
  5. Tarjan模板 人工栈版Tarjan
  6. 论文-Geography-Aware Sequential Location Recommendation
  7. 三维重建 PyQt Python VTK 医学图像的可视化 vtkImageView2三视图(横断面,冠状面,矢状面)
  8. Unity 输出360图片
  9. Pandas批量拆分Excel与合并Excel(十四)
  10. python从入门到实践18章答案