现在你知道Intent是什么了,是时候来看它如何运转的了。本节向你展示如何使用DIAL_ACTION 这个Intent来打开电话的拨号盘。你将用你的Intent来传递一个电话号码。如果应用程序工作正常,你将会看到由Intent传递,而显示在拨号盘内的号码。      第一步是为这个活动创建一个项目(具体操作见第五章:Android程序员向导目录)。把项目命名为AndroidPhoneDialer。下面的插图就是这个项目的新Android项目向导(略)。     在Eclipse内打开的新的应用程序,第一个要做的就是从main.xml中移除包含Hello World 声明的TextView。在删除了TextView后,main.xml文件应当看起来如下: <?xml version="1.0" encoding="utf-8"?>      你需要增加两个新的包装到你的项目中来使用DIAL_ACTION Intent,如下,第一个包装允许你设置Intents并且第二个允许你来分析URIs。 import android.content.Intent;  import android.net.Uri;

注意      对于DIAL_ACTION这个Intent有一些不同的Intent过滤器可以使用。你正在使用的是允许你把号码作为了一个URI来传递的过滤器。     下一步就是来创建你的Intent。创建一个Intent的语法如下: Intent = new Intent(,)     对于你的应用程序,把第一个参数用DialIntent替换掉。要获得第二个参数的数值,请参考Activity Action中的列表。(列表在文章中:什么是Intent)。要呼叫拨号盘,你需要使用DIAL_ACTION Intent。要正确的呼叫Intent,使用Intent.DIAL_ACTION这个格式。最后的参数,就是电话号码。DIAL_ACTION intent把号码作为一个URI。因此,你需要使用Uri.parse来分析出电话号码。使用Uri.parse将确保DIAL_ACTION intent能够理解你试图拨打的号码。你传递了一个Uri.parse的字符串来展示你要拨打的号码,在本例中是 "tel:5551212" 。     为你项目创建的最后一个呼叫应该像这样: Intent DialIntent = new  Intent(Intent.DIAL_ACTION,Uri.parse("tel:5551212"));

提示     你使用记号 tel:来呼叫一个指定的电话号码。你还可以使用voicemail来替代tel:呼出一个电话voicemail的快捷方式。     Intent创建后,你现在必须告诉Android你想要拨号盘在新的活动中被启动。要这样做,你使用setLaunchFlags()的Intent方法。你必须为启动来传递setLaunchFlags()合适的参数。下面是可以设置接受启动旗帜的一组列表: 注意 在其它情况下,可能会有超过一个的旗帜被设置来完成希望的结果。  ● NO_HISTORY_LAUNCH 启动活动,不记录在系统启动历史中  ● SINGLE_TOP_LAUNCH 告诉系统不要启动活动,如果该活动已经在运行  ● NEW_TASK_LAUNCH 启动活动  ● MULTIPLE_TASK_LAUNCH 启动活动,即使它已经在运行了  ● FORWARD_RESULT_LAUNCH 允许新的活动来接受结果,这个结果通常被转递给现存的活动。本例中,你要使用intent.NEW_TASK_LAUNCH,这样可以简单的让你打开一个新的拨号盘活动示例: DialIntent.setLaunchFlags(Intent.NEW_TASK_LAUNCH );      创建拨号盘的最后一步是启动活动。(更精确的说,你告诉Android你有一个作为新任务来启动的拨号盘。最终由Android来启动拨号盘活动)。要告诉Android你要启动拨号盘,你需要使用startActivity(): startActivity(DialIntent);     请注意到你把intent传递到startActivity()。这个Intent然后传递到Andriod,然后活动被执行。完整的AndroidPhoneDialer.java文件代码应当如下: package android_programmers_guide.AndroidPhoneDialer;  import android.app.Activity;  import android.content.Intent;  import android.os.Bundle;  import android.net.Uri;  public class AndroidPhoneDialer extends Activity {  /** Called when the Activity is first created. */  @Override  public void onCreate(Bundle icicle) {  super.onCreate(icicle);  setContentView(R.layout.main);  /** Create our Intent to call the Dialer */  /** Pass the Dialer the number 5551212 */  Intent DialIntent = new  Intent(Intent.DIAL_ACTION,Uri.parse("tel:5551212"));  /** Use NEW_TASK_LAUNCH to launch the Dialer Activity */  DialIntent.setLaunchFlags(Intent.NEW_TASK_LAUNCH );  /** Finally start the Activity */  startActivity(DialIntent);  }  }      你现在应当来编译AndroidPhoneDialer并且在模拟器中运行它。处理编译和运行应用程序的过程在前面的章节中描述过了。你应当已经熟悉这些过程了。一旦你运行应用程序,模拟器启动。在漫长的启动过程后,你的活动被启动。

提示     保持模拟器运行是一个好主意,即使你完成了你的活动并且以及返回到代码窗口。大多数人的本能习惯是在他们完成了测试活动后关闭模拟器。但是,我发现使模拟器一直开启会帮助两个主要的问题。第一个就是启动模拟器要花费大量的时间。保持模拟器开启会避开漫长的开启时间。第二,我已经注意到有好几次当我做一些小的修改到一个活动,而且它们没有被复制到模拟器。保持模拟器开启似乎可以缓解这个问题。如果你在模拟器中有问题,在你的电脑中移除userdata-qemu.img文件。这个会让模拟器从一个干净的镜像启动。

如果你正确的跟从本例中的代码,你应当能看到下面的结果(略): 如你所见,你已经打开了电话的拨号盘。这个拨号盘显示了你传递的号码,5551212。使用模拟器,点击呼叫按钮。现在电话应当虚拟的呼叫555-1212。显示拨号盘是有用的,加入你创建了一个应用程序运行用户来在呼叫前可以编辑号码,或者确认他们真的想要呼叫这个号码。那么你应当怎么做来让应用程序为你打电话呢?答案就在下一节中。

android第三方拨号盘,Android开发-教你如何使用拨号盘相关推荐

  1. android 第三方 im,Android基于环信SDK开发IM即时聊天

    目前市面上我了解的做第三方即时聊天SDK的有两家:环信.融云,这里我使用环信SDK来完成即时聊天的初步开发工作. 下面先奉上1张效果图: 1.开发准备 首先要到环信官网注册开发者账号,目前只有企业账号 ...

  2. android第三方手势,Android手势识别02——旋转、移动等使用第三方库

    Android手势识别02--旋转.移动等使用第三方库 一.简要说明 通过前面一篇文章(Android手势识别01--基本手势的处理)的学习,我们知道了基本手势的使用方法.但是我们发现这里基本上手势的 ...

  3. android 第三方裁剪,Android裁剪意向不适用于系统图库应用程序,但适用于第三方应用程序...

    我尝试从sdcard中选择一个图像,然后进行裁剪. ACTION_PICK没问题,但是当我调用ACTION_CROP时,我的系统图库应用程序(我称为A)无法执行操作,而另一个应用程序(B)可以执行该操 ...

  4. android第三方手势,Android手势---GestureDetector

    GestureDetector 可以使用 MotionEvents 检测各种手势和事件. 这个类只能用于检测触摸事件的 MotionEvent GestureDetector有三个内部接口,两个内部类 ...

  5. android第三方应用,Android 第三方应用接入微信平台研究情况分享(一)

    微信平台开放后倒是挺火的,许多第三方应用都想试下接入微信这个平台,毕竟可以利用微信建立起来的关系链来拓展自己的应用还是挺不错的,可以节约很多在社交方面的开销,我最近由于实习需要也在研究这个东西,不过发 ...

  6. Facebook android 第三方登录

    Facebook android 第三方登录 android平台使用Facebook账号登录自己的app - 前期准备 - 注册Facebook开发者账号,添加自己的应用,按照官方文档的指引完成需要的 ...

  7. 关于如何定制开发Android第三方ROM,最全开发教程、原理阐述

    一.首先,搞明白ROM的概念. 广义上对于ROM,有两种定义: 1.官方原厂ROM. 就是官方适配的ROM,无修改,原汁原味由品牌厂商自己定制开发的ROM. 2.第三方定制ROM. 意思很明确,就是经 ...

  8. android 混淆不混淆第三方jar,Android 第三方Jar包FastJson 代码混淆时的解决方法 - Android开发论坛 - 51CTO技术论坛_中国领先的IT技术社区...

    我们做AndroidApp软件的时候,经常会对App进行签名打包和代码混淆,在工程中没有使用第三方Jar文件的时候不用考虑很多因素,现在要说的是当你在你的工程使用使用了FastJson这个快速解析Js ...

  9. sqlite数据库android使用教程,Android开发教程之 SQLite数据库的使用

    在开发Android应用程序时经常需要存储数据,Android系统提供了SQLite数据库,还提供了SQLiteOpenHelper类,使我们可以很方便的操作数据库.通过一个例子来说明在Android ...

  10. android pdf阅读工具,android pdf 阅读器开发, pdf demo, pdf第三方控件

    Activity调用的方法 public class PDFActivity extends Activity implements OnPageChangeListener { public sta ...

最新文章

  1. [Android]转-Android 中的拿来主义(编译,反编译,AXMLPrinter2,smali,baksmali)!
  2. ubuntu中minicom安装和使用
  3. 配置MySQL8.0
  4. 生活大爆炸版石头剪刀布(洛谷-P1328)
  5. 深度学习行人重识别综述与展望
  6. 换到GitHub 博客了
  7. newifi3高恪魔改最新_12.08达达最新球球id账号呆瓜表
  8. linux on power 开源技术的新选择
  9. 软件工程:可行性研究
  10. Ubuntu 20.04安装微信,QQ,TIM
  11. Struts2拦截器Filter
  12. 解决Xstream中解析报文出现Cannot parse date的异常问题
  13. java实现幻方构造
  14. DRILLNET 2.0------第九章 套管设计模块
  15. 为什么你还是离不开微软的Office软件?
  16. JAVA毕设项目民航售票管理系统(java+VUE+Mybatis+Maven+Mysql)
  17. 开发一个会员管理系统
  18. 服务器怎么买,腾讯云服务器购买三种流程介绍
  19. 1354:括弧匹配检验
  20. 多智能体强化学习入门(七)——AC for CDec-POMDP 大规模规划学习算法

热门文章

  1. 命令提示符 查看已连接Wifi密码(忘记Wifi密码)
  2. mysql从创库到查询基本命令
  3. java即时通讯 开源_im即时通讯开源
  4. cxf配置http:conduit
  5. cocoscreator中tween详细用法
  6. Python 【人工智能】【大数据】【全栈】【自动化】技能-张子夜-专题视频课程...
  7. 基于模型的软件开发方法综述
  8. Why Transformer works
  9. LayoutInflater.inflate()方法的深入理解
  10. App逆向|一个案例教你如何进行APP逆向