构建Android电话相关的应用


  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);
[size=xx-large][/size]

更多相关文章

  1. 布局中文件中【控件间距参数详解以及单位选择】
  2. Android LayoutInflater.inflate(R.layout.activity_test, conta
  3. android调用系统打电话功能
  4. android电话拨号器源代码
  5. TextView 点击拨打电话
  6. 获取Android版本信息和电话信息
  7. Android性能检测--traceview工具各个参数的意思
  8. Android的电话功能介绍

随机推荐

  1. Android中Parcelable接口的使用
  2. Android(安卓)Handler机制1--ThreadLocal
  3. android 2.3 r1 中文 api (58) —— TabH
  4. android layouts之RelativeLayout
  5. Android(安卓)UI线程和非UI线程
  6. [入门八]Android的应用程序框架
  7. react-native APP图标和Splash(Android)
  8. Android中做一个无标题窗口
  9. 实现Android包的批量删除
  10. 移植android的工作环境