Android中电话相关操作
来源:互联网 发布:编程开多次根号 编辑:程序博客网 时间:2024/04/26 09:12
大概的意思:打出电话的过程是:安卓中的底层的service 与手机所在地的电信,移动,或者联通的基站 时刻相连,基站又与网络运营商的服务器相连。你的手机与基站相连,再与服务器相连,再与所拨打的电话号码的手机所在地附近的基站相连,再与对方手机相连。这个过程。
Android中电话的通信机制
一,如何使用代码拨打电话?
1>创建隐式意图:
Intent intent=new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:133333"));
2>启动Activity:
startActivity(intent);
3>在清单文件中注册拨号权限
android.permission.CALL_PHONE
二,如何监听呼入电话(监听电话状态)
1>编写一个监听器类,该类继承自PhoneStateListener。
重写该类中的监听方法。
2>获取TelephonyManager电话管理器。
调用manager.listen(); 开始监听。
3>在清单文件中注册权限。
android.permisison.READ_PHONE_STATE
三,如何监听呼出电话
1>编写一个广播接收器,接收呼出电话的系统广播:
Intent.ACTION_NEW_OUTGOING_CALL
2>重写广播接收器的onReceive方法,获取呼出电话
的电话号码,做后续业务。(可能需要拦截)
3>注册广播接收器。
4>在清单文件中添加权限。
android.permission.PROCESS_OUTGOING_CALLS
---------------------------------------------------------------------------------------------------
实例,如何实现上面三个问题
layout 布局文件
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<EditText
android:id="@+id/etNumber"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:hint="请输入电话号码"
android:ems="10" >
<requestFocus />
</EditText>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/etNumber"
android:onClick="doClick"
android:text="打电话" />
</RelativeLayout>
------------------------------------------------------------------------------------------
一,如何使用代码拨打电话?
1>创建隐式意图:
Intent intent=new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:133333"));
2>启动Activity:
startActivity(intent);
3>在清单文件中注册拨号权限
android.permission.CALL_PHONE
/**
* 监听
* @param view
*/
public void doClick(View view){
switch (view.getId()) {
case R.id.button1:
//1. 创建隐式意图
Intent intent = new Intent(Intent.ACTION_CALL);
String number = etNumber.getText().toString();
intent.setData(Uri.parse("tel:"+number));
//2. 启动Activity
startActivity(intent);
//3. 添加权限
break;
}
}
在 AndroidManifest.xml 项目清单文件中添加权限
<uses-permission android:name="android.permission.CALL_PHONE"/>
//拨打电话权限
<uses-permission android:name="android.permission.READ_PHONE_STATE"/> //监听呼入电话状态权限
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/> // 监听呼出电话权限
-----------------------------------------------------------------------------------------------------
二,
如何监听呼入电话(监听电话状态)
1>编写一个监听器类,该类继承自PhoneStateListener。
重写该类中的监听方法。
2>获取TelephonyManager电话管理器。
调用manager.listen(); 开始监听。
3>在清单文件中注册权限。
android.permisison.READ_PHONE_STATE
/**
* 监听电话的监听器
*/
class MyPhoneListener extends PhoneStateListener{
/**
* 当电话状态改变了 将会执行该方法
*/
@Override
public void onCallStateChanged(int state, String incomingNumber) {
Log.i("info", "incomingNumber:"+incomingNumber);
switch (state) {
case TelephonyManager.CALL_STATE_IDLE:
Log.i("info", "CALL_STATE_IDLE");
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
Log.i("info", "CALL_STATE_OFFHOOK");
break;
case TelephonyManager.CALL_STATE_RINGING:
Log.i("info", "CALL_STATE_RINGING");
break;
}
}
}
在onCreate()方法中
//监听电话状态 获取TelephonyManager电话管理器 这个是系统服务 所以用getSystemService
TelephonyManager manager = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
//调用listen方法开启监听
manager.listen(new MyPhoneListener(), PhoneStateListener.LISTEN_CALL_STATE);
添加权限
<uses-permission android:name="android.permission.READ_PHONE_STATE"/> //监听呼入电话状态权限
-----------------------------------------------------------------------------------------------------------------------
三 ,如何监听呼出电话
1>编写一个广播接收器,接收呼出电话的系统广播: Intent.ACTION_NEW_OUTGOING_CALL
2>重写广播接收器的onReceive方法,获取呼出电话 的电话号码,做后续业务。(可能需要拦截)
3>注册广播接收器。
4>在清单文件中添加权限。 android.permission.PRECESS_OUTGOING_CALLS
在OnCreate()方法中
//注册广播接收器
receiver = new MyPhoneReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_NEW_OUTGOING_CALL);
this.registerReceiver(receiver, filter);
/**
* 接收呼出电话系统广播的接收器
*/
class MyPhoneReceiver extends BroadcastReceiver{
public void onReceive(Context context, Intent intent) {
//获取呼出电话的号码
String number=getResultData();
Log.i("info", "number:"+number);
if(number.equals("18888888888")){
//把电话号码置null
setResultData(null);
}
}
}
添加权限
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/> // 监听呼出电话权限
最后在OnDestroy 中取消注册广播接收器
@Override
protected void onDestroy() {
super.onDestroy();
//取消注册广播接收器
this.unregisterReceiver(receiver);
}
0 0
- Android中电话相关操作
- Android电话相关的操作 - 打电话,接电话,挂电话
- Android电话相关的操作 - 打电话,接电话,挂电话
- Android电话相关的操作 - 打电话,接电话,挂电话
- 电话相关操作
- Android电话、短信相关
- Android电话拦截操作
- Android电话信息相关API
- android电话信息相关api
- Android电话信息相关API
- Android电话信息相关API
- Android 电话、联系人相关协议
- android有关电话的操作
- android常用的电话操作
- android中sim卡相关操作
- Android中屏幕相关的操作
- Android中SDcard文件操作相关方法
- Android Video 相关操作更新中
- 在登录界面,点击注册,注册成功后,把结果(用户名,密码)回传给登录界面,用来设置控件
- 把uri中的中文 按照url的编码方式 进行编码
- 点击返回键之后的处理onKeyDown
- Android中的AppWidget
- 帧动画,Android中的动画 --Frame Animation
- Android中电话相关操作
- Java反射机制总结
- Linux 系统下的各种包的安装
- AIDL
- Android中的属性动画:
- 给listView添加滚动事件监听
- UVA_10534_Wavio Sequence
- 通话记录界面 包含拨号界面的监听事件
- Android中短信的收发机制 发送短信 接收短信 拦截短信 监听短信