与电话相关权限

拨打电话
android.permission.CALL_PHONE,允许程序从非系统拨号器里输入电话号码
通话权限
android.permission.CALL_PRIVILEGED,允许程序拨打电话,替换系统的拨号器界面

读取电话状态
android.permission.READ_PHONE_STATE,访问电话状态

修改电话状态
android.permission.MODIFY_PHONE_STATE,修改电话状态,如飞行模式,但不包 替换系统拨号器界面

处理拨出电话
android.permission.PROCESS_OUTGOING_CALLS,允许程序监视,修改或放弃播出电话
AndroidManifest.xml
<uses-permission android:name="android.permission.READ_PHONE_STATE" /><uses-permission android:name="android.permission.CALL_PHONE" /><uses-permission android:name="android.permission.MODIFY_PHONE_STATE" /><uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />

扩展阅读:android权限大全
----------------------------------------------------------------
Android在电话状态改变是会发送
action为android.intent.action.PHONE_STATE的广播

而拨打电话时会发送
action为android.intent.action.NEW_OUTGOING_CALL的广播
例如:
IntentFilter filter = new IntentFilter();filter.addAction("android.intent.action.NEW_OUTGOING_CALL");filter.addAction("android.intent.action.PHONE_STATE");

-------------------------------------------------
去电时:
* 未接:phone_state=OFFHOOK;
* 挂断:phone_state=IDLE
* 来电时: *
* 未接:phone_state=RINGING
* 已接:phone_state=OFFHOOK;
* 挂断:phone_state=IDLE
-------------------------------------------

JAVA代码
public class PhoneCallReceiver extends BaseReceiver {/**//拨打电话判断及获取号码if(intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)){String phoneNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);*/@Overridepublic void onReceive(Context context, Intent intent) {String phone_state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);/*去电时: * 未接:phone_state=OFFHOOK; * 挂断:phone_state=IDLE * 来电时: *  * 未接:phone_state=RINGING * 已接:phone_state=OFFHOOK; * 挂断:phone_state=IDLE**/System.out.println("phone_state======"+phone_state);String incoming_number = intent.getStringExtra("incoming_number");//String incoming_number = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER );    String outgoing_number = intent.getStringExtra("android.intent.extra.PHONE_NUMBER");    System.out.println("incoming_number======"+incoming_number);    System.out.println("outgoing_number======"+outgoing_number);    //去电设值    if(outgoing_number!=null && outgoing_number.length()>0){     System.out.println("去电号码"+outgoing_number);        }     //来电设值    if(incoming_number!=null && incoming_number.length()>0){     System.out.println("来电号码"+incoming_number);    }    if (TelephonyManager.EXTRA_STATE_OFFHOOK.equals(phone_state) || TelephonyManager.EXTRA_STATE_RINGING.equals(phone_state)){System.out.println("去电话未接或来电未接及来电已接");}if (TelephonyManager.EXTRA_STATE_IDLE.equals(phone_state)){                    System.out.println("电话已挂断");}return;}}


参考文章:
Android之TelephonyManager使用
Android 电话状态的监听(来电和去电)

更多相关文章

  1. cts测试流程
  2. android 用BroadcastReceiver监听网络~
  3. Android轮播图封装,下拉刷新相结合
  4. unity3d开发需要知道的一些常量
  5. android之RadioButton设置setChecked(true)失效
  6. android添加常驻图标到状态栏
  7. android中保存Bitmap图片到指定文件夹中的方法
  8. Android(安卓)intent传递hashMap对象,遍历hashMap,改变menu状态
  9. [Android][M0][Call] 拨打电话

随机推荐

  1. android 工程,点击图片,在屏幕显示
  2. Android(安卓)sensor 学习--sensor介绍
  3. Android(安卓)RecyclerView多个Item布局
  4. 在android获取root权限的方法^_^。
  5. Android的权限 permission
  6. Android(安卓)SDK Manager解决更新时的问
  7. Error:(19, 0) Gradle DSL method not fo
  8. Android-->build.gradle-->buildTypes
  9. JNI在Android中的简单使用
  10. 2011.07.08——— android n获得壁纸