本文实例为大家分享了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实现接通和挂断电话