这次要介绍的是Telephony这个组件,我们把它和WinCE做对比,发现它其实就是做了CellCore做的工作,只是CellCore依然很面向过程地单纯导出SDK,然后让上层驱动调用。Telephony由于是运行在我们的Dalvik虚拟机上面的,所以它的实现也就更面向对象化了。接下来让我们看看怎么使用这个Telephony库开发我们的电话应用。
Telephony库主要负责Android的拨打与接听电话功能,其中有两个重要的类分别是IPhone和PhoneNumberUtils是我们实现电话功能必不可少的。当我们的应用需要拨打一个号码的时候,Android默认是没有授予我们这个应用的这个权限的,因此我们必须在AndroidManifest.xml中去打开这个权限。AndroidManifest.xml是每一个应用都需要的文件,它位于应用的根目录下,文件里描述了程序包的全局变量,包括暴露的应用组件(activities, services等等)和为每个组件的实现类,以及什么样的数据可以操作和它在什么地方运行。现在我们在<manifest>里面添加一行:
<uses-permission id="android.permission.CALL_PHONE" />
从此我们的应用就拥有了拨打电话的权限了,接下来就是建立一个IPhone类的对象,上次我已经介绍了必须要通过ServiceManager来获得,以下代码演示了如何建立一个IPhone类对象:
private static IPhone getPhoneInterface() throws DeadObjectException
{
IServiceManager sm = ServiceManagerNative.getDefault();
IPhone phoneService = IPhone.Stub.asInterface(sm.getService("phone"));
return phoneService;
}
一旦建立完了IPhone对象,即可使用call或者dail方法来拨电话了:
void call(String number)
void dial(String number)
它们之间的差别就是call是在后台进行的,一般用于数据传输(gprs,edge)的应用,而dial是会显示一个简单的拨号界面,上面预设了你的参数作为拨号的号码,如果给dial的参数传入NULL,则会调用拨号的界面显示出来。
还有一种简单的拨号方法,有仔细看Intent文档的人就会发现,对一个电话格式的网址(如href="tel+86)1234567890")发送出CALL_ACTION,就可以调用拨号程序对其进行拨号。这种方便的方法可以在开发我们的浏览器应用的时候,直接在浏览网页的时候正则匹配到电话号码,然后直接调用拨号程序对其拨号,很方便吧。
获取电话的属性可以通过TelephonyProperties来实现,比如SIM卡,IMEI等信息,我们可以通过调用os.SystemProperties.put()方法传入TelephonyProperties的字段来设置对应的参数,也可以通过os.SystemProperties.get()方法获取这些参数,以下是一些实际引用的例子:
获取本机号码,调用android.os.SystemProperties.get(PROPERTY_LINE1_NUMBER);
获取IMEI,调用android.os.SystemProperties.get(PROPERTY_IMEI);
获取运营商名字,调用android.os.SystemProperties.get(PROPERTY_SIM_OPERATOR_ALPHA);
获取国家代码,调用android.os.SystemProperties.get(PROPERTY_SIM_OPERATOR_ISO_COUNTRY);
获取语音信箱号码,调用哪个android.os.SystemProperties.get(PROPERTY_LINE1_VOICE_MAIL_NUMBER);
分享到:
相关推荐
综上所述,开发“android应用-电话拦截实例”需要深入理解Android系统的组件、服务和权限机制,以及如何构建良好的用户交互。通过熟练掌握这些知识点,你将能够创建一个功能完善的电话拦截应用。
在Android平台上,开发一款能够拨打电话的应用涉及到许多关键知识点,这些知识点主要集中在Android系统的权限管理、Intent...这不仅对开发拨打电话应用有帮助,还对理解Android开发的整体流程和最佳实践具有重要意义。
【Android 移动应用开发基础】\n\nAndroid 移动应用开发是构建智能手机和平板电脑应用程序的关键技术,尤其在微课版的教程中,它着重于基础概念和实践技能的传授。本教程涵盖了一些核心知识点,让我们逐一深入探讨。...
Android是谷歌公司开发的一款开源操作系统,主要应用于移动设备,如智能手机和平板电脑,但其应用领域远远不止于此。本视频教程“004集-android的应用领域”针对初学者,将全面解析Android系统的广泛应用。 首先,...
应用层包含了用户可以直接使用的各种应用程序,如电话、短信、浏览器等。应用程序框架层为开发者提供了API接口,使他们能够构建自己的应用程序。核心类库包含了许多Java库和C/C++库,为系统提供基础服务。最后,...
本项目名为“简单的android打电话应用”,旨在提供一个入门级的教程,帮助开发者掌握如何构建一个能够拨打电话的程序。 首先,我们需要了解Android应用程序的基础架构。Android应用基于组件模型,其中Activity是最...
Android应用框架是构建Android应用程序的基础,它包含了操作系统与应用程序之间的所有中间层,使得开发者能够创建功能丰富的移动应用。本文将详细讲解Android应用框架及其开发步骤。 首先,Android应用框架包括了多...
2. **拨打电话应用源码**:电话应用(Dialer App)是Android系统的核心组件之一,负责处理来电、去电和接听电话。源码中涵盖了电话服务(Telephony Service)的接口调用,通话状态监听,以及使用Intent启动通话。它...
研究这些源码可以帮助开发者深入理解Android电话功能的工作原理,并进行自定义开发或优化。 总的来说,理解和研究"android 电话源码"需要扎实的Java编程基础,对Android系统架构和框架有深入理解,同时还需要熟悉...
本文将基于"Android入门-新手如何成功创建一个Android小应用"的主题,详细阐述Android应用开发的基础步骤,帮助初学者逐步掌握核心概念。 首先,从创建一个Android项目开始(1.1创建一个安卓工程 -Creating an ...
Android SDK(软件开发工具包)包含了开发者构建Android应用所需的所有工具,其中包括Java库。开发者可以使用Java编程语言,配合Android SDK中的API来编写应用。源码揭示了这些API背后的实现细节。 2. **Android...
在Android应用开发中,测试是确保产品质量和用户体验...总的来说,Android平台提供了全面的测试支持,帮助开发者构建高质量、稳定的应用程序。理解和掌握这些测试工具和技术对于任何Android开发者来说都是至关重要的。
通过理解这些核心概念,开发者可以构建出与电话功能深度集成的应用,提供定制化的电话体验。在实际开发中,还需要关注不同Android版本间的差异以及设备制造商的定制化行为。对于初学者来说,深入学习这些知识点将对...
在Android操作系统中,电话本(Contact)是用户管理和查找联系人信息的核心应用。它整合了手机中的姓名、电话...通过深入研究和实践,开发者不仅可以构建自己的联系人管理应用,还能提升对Android系统整体架构的理解。
在这个基于PhoneGap的Android电话本源码中,开发者利用了PhoneGap的强大功能,创建了一个能够与手机系统电话本进行交互的应用。 首先,让我们深入了解PhoneGap的工作原理。PhoneGap通过WebView组件将Web应用程序与...
总的来说,这款Android版免费网络电话应用结合了VoIP技术、身份验证机制和匿名通话功能,提供了一种便捷、低成本的通信方式。其源代码可在Eclipse中运行,对于开发者来说是一个学习和研究VoIP应用开发的宝贵资源。...