Android入门篇(四):自动拨打电话、手动拨打电话
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入门篇(四):自动拨打电话、手动拨打电话相关推荐
- FPGA基础入门篇(四) 边沿检测电路
FPGA基础入门篇(四)--边沿检测电路 一.边沿检测 边沿检测,就是检测输入信号,或者FPGA内部逻辑信号的跳变,即上升沿或者下降沿的检测.在检测到所需要的边沿后产生一个高电平的脉冲.这在FPGA电 ...
- kotlin开发Android入门篇一
基础篇:基本类型及方法的定义 kotlin介绍:Kotlin是一个基于JVM 的新的编程语言,由JetBrains 开发. Kotlin可以编译成Java字节码,也可以编译成JavaScript,方便 ...
- Android 入门篇(一)环境搭建
关于学习方向这一块,我想了很长时间,安卓在未来的几年里肯定不如之前火爆,但是我既然一开始在这个方向上做了不少的努力,那么就没有理由选择放弃,这就是我的思维方式吧.在我刚入门的时候想过很多东西,也有很多 ...
- Android入门教程四十六之ViewFlipper(翻转视图)的基本使用
本节给大家带了的是ViewFlipper,它是Android自带的一个多页面管理控件,且可以自动播放! 和ViewPager不同,ViewPager是一页页的,而ViewFlipper则是一层层的,和 ...
- Android入门篇
1.介绍Android 1.1.Android相关的基础知识 Android是基于Linux的开源的操作系统,在2008年由Google率先推出:Android与IOS操作系统最大的区别就是IOS主要 ...
- 插入始终是1_C++入门篇(四十四),链表查询与结点插入
链表的查询 对链表进行各种操作时,需要先对某一个结点进行查询定位.假设数据中没有数据相同的结点,我们可以编写这样一个函数,查找到链表中符合条件的结点,我们在四十三篇的代码中声明搜索结点函数原型: 在底 ...
- Android 入门(四) | Intent 实现 Activity 切换
文章目录 Intent 显式 Intent 定义两个 xml 文件 android:orientation match_parent 和 wrap_content Intent函数 定义两个 Acti ...
- Android入门篇二:使用意图在Activity之间传递数据
首先,在这里稍微介绍一下意图(Intent)的概念: Intent(意图)主要是解决Android应用的各项组件之间的通讯. Intent 负责对应用中一次操作的动作.动作涉及数据.附加数据进行描述, ...
- kotlin开发Android入门篇八Kotlin开发Android的基本使用
基础篇:Kotlin开发Android的基本使用 使用AndroidStudio3.0及以上开发Kotlin在新建项目中勾选这个选项则会默认开发语言为Koltin,然后再gradle(Project的 ...
最新文章
- 计算机话筒接口,电脑麦克风插口是哪个哪位知道?
- CISCO SCE 第三部分 SCE平台的升级
- 汇编语言重写除零中断
- JavaScript websocket 实例
- 从土地利用规划到国土空间规划的一些思考
- android原生ios,Windows Phone的原生iOS/Android应用程序
- 医院耗材管理系统开发_4
- iOS UILabel字体设置
- CImageList用法介绍
- c51单片机蜂鸣器汇编语言,51单片机控制蜂鸣器播放5首歌曲汇编程序
- ShareSDK分享 和新浪登陆冲突解决方法
- TensorFlow 2.10 Unable to register cuBLAS factory Attempting to register factory for plugin cuBLAS方案
- 站在商业、技术与人文三叉路口的实体书店
- opencv不规则掩膜裁剪图片
- mysql 历史数据迁移,MySQL 历史数据表迁移方法
- JAVA 中级 ARRAYLIST - ARRAYLIST上使用泛型
- 阿里云视频服务之点播服务
- 关于UI使用ContentSizeFitter组件同步立即响应
- ensp——防火墙安全策略配置实验
- Photoshop中的填充功能
热门文章
- Til the Cows Come Home(dijkstra)
- Matlab进行gnss用户坐标计算,论文推荐 | 嵇昆浦,沈云中:含缺值GNSS基准站坐标序列的非插值小波分析与信号提取...
- 曹图强:思科正成为全数字化转型基石
- 3d游戏场景建模设计师需要学哪些软件?
- Tarjan模板 人工栈版Tarjan
- 论文-Geography-Aware Sequential Location Recommendation
- 三维重建 PyQt Python VTK 医学图像的可视化 vtkImageView2三视图(横断面,冠状面,矢状面)
- Unity 输出360图片
- Pandas批量拆分Excel与合并Excel(十四)
- python从入门到实践18章答案