两种Android打电话实现方法
在android开发中,用户能够拨打电话是最基本的需求。俗话说“条条大路通罗马”,实现拨打电话的方式有多种,今天,就提供最常用两种。
首先,拨打电话,对于用户来说,是一个耗费的操作,因此,需要一定权限,就是android.permission.CALL_PHONE权限,我们需要在AndroidMenifest文件里加上这个权限:<uses-permission android:name="android.permission.CALL_PHONE" />。
第一种方法,拨打电话跳转到拨号界面。源代码如下:
Intent intent = new Intent(Intent.ACTION_DIAL); Uri data = Uri.parse("tel:" + "135xxxxxxxx"); intent.setData(data); startActivity(intent);
运行结果如下:
小结,这种方式的特点就是,去到了拨号界面,但是实际的拨号是由用户点击实现的。
第二种方法,拨打电话直接进行拨打,但是有些第三方rom(例如:MIUI),不会直接进行拨打,而是要用户进行选择是否拨打,源代码如下:
Intent intent = new Intent(Intent.ACTION_CALL); Uri data = Uri.parse("tel:" + "135xxxxxxxx"); intent.setData(data); startActivity(intent);
运行结果如下:
小结,这种方式的特点就是,直接拨打了你所输入的号码,所以这种方式对于用户没有直接的提示效果。
总结,Android推荐使用第一种方式,如果是第二种的话,建议在之前加一个提示,是否拨打号码,然后确定后再拨打。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
Android 后台调度任务与省电详解
I. Handler: 在进程存活的期间有效使用, Google官方推荐使用. 简单易用. 稳定高效. II. AlarmManager: 利用系统层级的闹钟服务(持有Wake lock). 如果需要精确的定时任务,这个是最佳选择. 1. 功能 在大概的时间间隔 运行/重复执行 指定任务. 指定精确的时间间隔执行任务. 2. 特征 注册以后,无论是自己的应用进程是否存在/组件是否存在,都会正常执行. 所有注册的闹钟服务都会在系统重启后复位,因此如果需要保证任务,就需要注册RECEIVE_BOOT
-
C/C++在Java、Android和Objective-C三大平台下实现混合编程
Android和iOS开发都支持C++开发,可以一套代码多平台使用.同时C++难以反编译的特性也可以为Android开发带来代码的保密,另一native特性也可以提高代码的运行效率. 一.为什么使用C/C++ 便于移植,用C/C++写得库可以方便在其他的平台上再次使用. 代码的保护,由于java层代码很容易被反编译,而C/C++库反汇难度较大. 提高程序的执行效率,将要求高性能的应用逻辑使用C/C++开发,从而提高应用程序的执行效率. 访问现有开源库,需要访问底层的API或引用一些只有C/C++
-
Android 中的注解深入探究
本文系GDG Android Meetup分享内容总结文章 注解是我们经常接触的技术,Java有注解,Android也有注解,本文将试图介绍Android中的注解,以及ButterKnife和Otto这些基于注解的库的一些工作原理. 归纳而言,Android中的注解大概有以下好处 提高我们的开发效率 更早的发现程序的问题或者错误 更好的增加代码的描述能力 更加利于我们的一些规范约束 提供解决问题的更优解 准备工作 默认情况下,Android中的注解包并没有包括在framework中,它独立成一个
-
Android ListView中动态显示和隐藏Header&Footer的方法
ListView的模板写法 ListView模板写法的完整代码: •android代码优化----ListView中自定义adapter的封装(ListView的模板写法) 以后每写一个ListView,就这么做:直接导入ViewHolder.java和ListViewAdapter,然后写一个自定义adapter继承自ListViewAdapter就行了. ListView中动态显示和隐藏Header&Footer 如果需要动态的显示和隐藏footer的话,按照惯例,误以为直接通过setVis
-
Android高仿微信支付密码输入控件
像微信支付密码控件,在app中是一个多么司空见惯的功能.最近,项目需要这个功能,于是乎就实现这个功能. 老样子,投篮需要找准角度,变成需要理清思路.对于这个"小而美"的控件,我们思路应该这样子. Ⅰ.将要输入密码数量动态通过代码加载出来. Ⅱ.利用Gridview模拟产生一个输入数字键盘,并且按照习惯从屏幕底部弹出来. Ⅲ.对输入数字键盘进行事件监听,将这个输入数字填入到这个密码框中,并且当您输入密码长度一致的时候,进行事件回调. 这个思维导图应该是这样的: 首先,我们要根据需求动态加
-
Android实现气泡布局/弹窗效果 气泡尖角方向及偏移量可控
Android 自定义布局实现气泡弹窗,可控制气泡尖角方向及偏移量. 效果图 实现 首先自定义一个气泡布局. /** * 气泡布局 */ public class BubbleRelativeLayout extends RelativeLayout { /** * 气泡尖角方向 */ public enum BubbleLegOrientation { TOP, LEFT, RIGHT, BOTTOM, NONE } public static int PADDING = 30; public
-
Android 消息机制问题总结
Android的消息机制几乎是面试必问的话题,当然也并不是因为面试,而去学习,更重要的是它在Android的开发中是必不可少的,占着举足轻重的地位,所以弄懂它是很有必要的.下面就来说说最基本的东西. Looper 作用: 关联起Thread 循环取出消息 1.Looper是否可以直接实例化? Looper构造方法是私有的,其中做了两件事 创建一个MessageQueue 得到与之对应的Thread private Looper(boolean quitAllowed) { mQueue = ne
-
Android 利用 APT 技术在编译期生成代码
APT(Annotation Processing Tool 的简称),可以在代码编译期解析注解,并且生成新的 Java 文件,减少手动的代码输入.现在有很多主流库都用上了 APT,比如 Dagger2, ButterKnife, EventBus3 等,我们要紧跟潮流,与时俱进呐! (ง •̀_•́)ง 下面通过一个简单的 View 注入项目 ViewFinder 来介绍 APT 相关内容,简单实现了类似于ButterKnife 中的两种注解 @BindView 和 @OnClick . 项目
-
Android拍照和获取相册图片
之前遇到各种拍照啊,获取相册图片之类,都是直接去度娘,要么之前的代码复制下,没好好总结过. 再也不要问度娘了,再也不用一堆博客里找啊找了... ----------------------------------------------我是正文的分割线----------------------------------------------------------- 一个一个来,先说调用手机相机拍照(最简单版): cameraButton.setOnClickListener(new View
-
Android高仿微信表情输入与键盘输入详解
最近公司在项目上要使用到表情与键盘的切换输入,自己实现了一个,还是存在些缺陷,比如说键盘与表情切换时出现跳闪问题,这个相当困扰我,不过所幸在Github(其中一个不错的开源项目,其代码整体结构很不错)并且在论坛上找些解决方案,再加上我也是研究了好多个开源项目的代码,最后才苦逼地整合出比较不错的实现效果,可以说跟微信基本一样(嘿嘿,只能说目前还没发现大Bug,若发现大家一起日后慢慢完善,这里我也只是给出了实现方案,拓展其他表情我并没有实现哈,不过代码中我实现了一个可拓展的fragment模板以便大
-
Android 事件分发详解及示例代码
事件分发是Android中非常重要的机制,是用户与界面交互的基础.这篇文章将通过示例打印出的Log,绘制出事件分发的流程图,让大家更容易的去理解Android的事件分发机制. 一.必要的基础知识 1.相关方法 Android中与事件分发相关的方法主要包括dispatchTouchEvent.onInterceptTouchEvent.onTouchEvent三个方法,而事件分发一般会经过三种容器,分别为Activity.ViewGroup.View.下表对这三种容器分别拥有的事件分发相关方法进行
随机推荐
- Mac入门使用brew安装软件
- 实例讲解分布式缓存软件Memcached的Java客户端使用
- PHP实现广度优先搜索算法(BFS,Broad First Search)详解
- 计算一段日期内的周末天数的php代码(星期六,星期日总和)
- PHP 年月日的三级联动实例代码
- smarty 缓存控制前的页面静态化原理
- 浅谈Arrays.asList()方法的使用
- C++ 学习之旅三 我和超级玛丽有个约会
- mysql一键安装教程 mysql5.1.45全自动安装(编译安装)
- 在IE模态窗口中自由查看HTML源码的方法
- javascript 简练的几个函数
- Python中的ConfigParser模块使用详解
- 基于Java的Spring框架来操作FreeMarker模板的示例
- python中json格式数据输出的简单实现方法
- SQL Sever查询语句大全集锦
- 理解SQL SERVER中的逻辑读,预读和物理读
- mysql常用命令行操作语句
- 基于jquery实现页面滚动到底自动加载数据的功能
- DOM 事件的深入浅出(一)
- 一个Js文件函数中调用另一个Js文件函数的方法演示