android实现接通和挂断电话

  

本文实例为大家分享了android实现接通和挂断电话的具体代码,供大家参考,具体内容如下

  

关键代码:【PhoneUtils类】

        包com.ebupt.phonerecorddemo.server;      进口java.lang.reflect.Method;   进口android.content.Context;   进口android.content.Intent;   进口android.telephony.TelephonyManager;   进口android.util.Log;   进口android.view.KeyEvent;      进口com.android.internal.telephony.ITelephony;      公开课PhoneUtils {   静态字符串标签=" PhoneUtils”;/* *   *从TelephonyManager中实例化ITelephony,并返回   */静态公共ITelephony getITelephony (TelephonyManager telMgr)   抛出异常{   方法getITelephonyMethod=telMgr.getClass () .getDeclaredMethod (   “getITelephony”);   getITelephonyMethod.setAccessible(真正);//私有化函数也能使用   返回(ITelephony) getITelephonyMethod.invoke (telMgr);   }//自动接听   公共静态孔隙autoAnswerPhone(上下文c, TelephonyManager tm) {   尝试{   日志。我(标签,“autoAnswerPhone”);   ITelephony ITelephony=getITelephony (tm);//itelephony.silenceRinger ();   itelephony.answerRingingCall ();   }捕捉(异常e) {   e.printStackTrace ();   尝试{   日志。2.3 e(标签”,用于Android2.3及以上的版本上”);   目的意图=new意图(“android.intent.action.MEDIA_BUTTON”);   KeyEvent KeyEvent=new KeyEvent (KeyEvent.ACTION_DOWN   KeyEvent.KEYCODE_HEADSETHOOK);   intent.putExtra (“android.intent.extra.KEY_EVENT”, keyEvent);   c.sendOrderedBroadcast(意图,   “android.permission.CALL_PRIVILEGED”);   意图=new意图(“android.intent.action.MEDIA_BUTTON”);   keyEvent=new keyEvent (KeyEvent.ACTION_UP   KeyEvent.KEYCODE_HEADSETHOOK);   intent.putExtra (“android.intent.extra.KEY_EVENT”, keyEvent);   c.sendOrderedBroadcast(意图,   “android.permission.CALL_PRIVILEGED”);   意图localIntent1=new意图(Intent.ACTION_HEADSET_PLUG);   localIntent1.addFlags (Intent.FLAG_ACTIVITY_NO_HISTORY);   localIntent1。putExtra(“状态”,1);   localIntent1。putExtra("麦克风",1);   localIntent1。putExtra(“名字”,“耳机”);   c.sendOrderedBroadcast (localIntent1   “android.permission.CALL_PRIVILEGED”);   意图localIntent2=new意图(Intent.ACTION_MEDIA_BUTTON);   KeyEvent localKeyEvent1=new KeyEvent (KeyEvent.ACTION_DOWN   KeyEvent.KEYCODE_HEADSETHOOK);   localIntent2.putExtra (“android.intent.extra.KEY_EVENT”,   localKeyEvent1);   c.sendOrderedBroadcast (localIntent2   “android.permission.CALL_PRIVILEGED”);   意图localIntent3=new意图(Intent.ACTION_MEDIA_BUTTON);   KeyEvent localKeyEvent2=new KeyEvent (KeyEvent.ACTION_UP   KeyEvent.KEYCODE_HEADSETHOOK);   localIntent3.putExtra (“android.intent.extra.KEY_EVENT”,   localKeyEvent2);   c.sendOrderedBroadcast (localIntent3   “android.permission.CALL_PRIVILEGED”);   意图localIntent4=new意图(Intent.ACTION_HEADSET_PLUG);   localIntent4.addFlags (Intent.FLAG_ACTIVITY_NO_HISTORY);   localIntent4。putExtra(“状态”,0);   localIntent4。putExtra("麦克风",1);   localIntent4。putExtra(“名字”,“耳机”);   c.sendOrderedBroadcast (localIntent4   “android.permission.CALL_PRIVILEGED”);   }捕获异常(e2) {   e2.printStackTrace ();   意图meidaButtonIntent=new意图(   Intent.ACTION_MEDIA_BUTTON);   KeyEvent KeyEvent=new KeyEvent (KeyEvent.ACTION_UP   KeyEvent.KEYCODE_HEADSETHOOK);   meidaButtonIntent.putExtra(意图。EXTRA_KEY_EVENT keyEvent);   c。sendOrderedBroadcast (meidaButtonIntent, null);   }   }   }//自动挂断   公共静态孔隙endPhone(上下文c, TelephonyManager tm) {   尝试{   日志。我(标签,“endPhone”);   ITelephony ITelephony;   方法getITelephonyMethod=TelephonyManager.class   .getDeclaredMethod (“getITelephony”(类[])零);   getITelephonyMethod.setAccessible(真正的);   (toyota iTelephony=(iTelephony) getITelephonyMethod.invoke   (Object []) null);//挂断电话   iTelephony.endCall ();   }捕捉(异常e) {   e.printStackTrace ();   }   }      }      之前      

需要用到的ITelephony。aidl:
  

        包com.android.internal.telephony;/* *   *接口用于与手机交互。主要使用的   * TelephonyManager类。一些地方仍然是直接使用这个。   *如果可能请清理和使用TelephonyManager代替。   * {@hide}   */接口ITelephony {/* *   *结束打电话或去主屏幕   * @return是否挂了电话   */布尔endCall ();/* *   *回答currently-ringing调用。   *   *当前活动调用,如果已经有一个电话   *自动把>   包com.ebupt.phonerecorddemo.server;      进口android.app.Service;   进口android.content.BroadcastReceiver;   进口android.content.Context;   进口android.content.Intent;   进口android.telephony.TelephonyManager;   进口android.util.Log;      公开课PhoneReceiver BroadcastReceiver{延伸   字符串标签=癙honeReceiver”;   @Override   公共空间>   & lt; uses-permission android: name=" android.permission。祝辞READ_PHONE_STATE”;   & lt;/uses-permission>   & lt; uses-permission android: name=" android.permission。祝辞PROCESS_OUTGOING_CALLS”;   & lt;/uses-permission>   & lt; uses-permission android: name=" android.permission。MODIFY_PHONE_STATE”/比;   & lt; uses-permission android: name=" android.permission。CALL_PHONE”/比;

android实现接通和挂断电话