麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

AIDL自動(dòng)掛斷電話

2019-11-08 00:30:38
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

該業(yè)務(wù)是屬于跨進(jìn)程的數(shù)據(jù)獲取

所需權(quán)限

<!--     打電話權(quán)限 --><uses-permission android:name="android.permission.CALL_PHONE"/><!-- 監(jiān)聽電話權(quán)限   --><uses-permission android:name="android.permission.READ_PHONE_STATE"/><!-- 處理呼出電話權(quán)限,用于修改呼出的電話號(hào)碼    --><uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>

1、建一個(gè)新的包,包名為

com.android.internal.telephony

          在該包內(nèi)創(chuàng)建一個(gè)接口類  (官方已經(jīng)定死的,名為代理接口)

interface ITelephony{    boolean endCall();    void answerRingingCall();}

2、找到你的項(xiàng)目存在的文件夾位置,找到該接口類,將后綴名java 改名 aidl  (后綴名需在電腦進(jìn)行設(shè)置可見才可以改到的具體步驟百度)

      ITelephony.aidl

3、重啟eclips 或者刷新項(xiàng)目

配置成功后,在 gen 目錄下會(huì)有一個(gè)包名為com.android.internal.telephony的包   里面有一個(gè) ITelephony.java類   自動(dòng)生成的

4、  在需要掛斷電話功能的類添加一個(gè)方法     在需要調(diào)用該方法的位置時(shí),需要傳入一個(gè)TelephoneManager對(duì)象

原理:通過(guò)反射獲取aidl代理接口的對(duì)象 ITelephony 

private static ITelephony getITelephony(TelephonyManager telephony)throws IllegalArgumentException,IllegalaccessException,

                        InvocationTargetException,NoSuchMethodException {Method getITelephonyMethod = null;getITelephonyMethod = telephony.getClass().getDeclaredMethod("getITelephony");getITelephonyMethod.setAccessible(true);// 私有化函數(shù)也能使用return (ITelephony) getITelephonyMethod.invoke(telephony);}

5、寫一個(gè)內(nèi)部類繼承自PhoneStateListener

class MyPhoneStateListener extends PhoneStateListener {/** * 電話狀態(tài)改變監(jiān)聽 */@Overridepublic void onCallStateChanged(int state, // 狀態(tài)常量String incomingNumber) {Log.i("info", "額incomingNumber" + incomingNumber);switch (state) {case TelephonyManager.CALL_STATE_IDLE:// 空閑Log.i("info", "CALL_STATE_IDLE" + "空閑狀態(tài)");break;case TelephonyManager.CALL_STATE_OFFHOOK:// 接聽Log.i("info", "CALL_STATE_OFFHOOK" + "接聽狀態(tài)");break;case TelephonyManager.CALL_STATE_RINGING:// 振鈴TelephonyManager manager = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);ITelephony iTelephony;try {iTelephony = getITelephony(manager);if (iTelephony != null) {if (incomingNumber.equals("123")) {

//如果號(hào)碼為123try {iTelephony.endCall();Log.i("info", "已掛斷" + "  號(hào)碼為:" + incomingNumber);} catch (RemoteException e) {// TODO Auto-generated catch blocke.printStackTrace();}}} else {Log.i("info", "CALL_STATE_RINGING" + "振鈴狀態(tài)" + "ITelephonyManager為空");}} catch (IllegalArgumentException e1) {// TODO Auto-generated catch blocke1.printStackTrace();} catch (IllegalAccessException e1) {// TODO Auto-generated catch blocke1.printStackTrace();} catch (InvocationTargetException e1) {// TODO Auto-generated catch blocke1.printStackTrace();} catch (NoSuchMethodException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}break;}}}

6、在生命周期開始時(shí)onCreate時(shí) 進(jìn)行廣播注冊(cè)即可

protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);

// 開啟電話監(jiān)聽狀態(tài)TelephonyManager manager = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);// 調(diào)用listener的監(jiān)聽方法、監(jiān)聽電話狀態(tài)的方法listener = new MyPhoneStateListener();manager.listen(listener, PhoneStateListener.LISTEN_CALL_STATE);// 注冊(cè)廣播接收器receiver = new MyPhoneReceiver();IntentFilter filter = new IntentFilter();filter.addAction(Intent.ACTION_NEW_OUTGOING_CALL);registerReceiver(receiver, filter);}


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 一级做受毛片免费大片 | 成人 精品| 国产视频在线观看一区二区三区 | 欧美一级黄色录相 | 一级空姐毛片 | 成人wxx视频免费 | 鲁久久 | 三级国产三级在线 | 久久影院在线观看 | 在线成人免费观看www | 日本最新免费二区三区 | 中文字幕一区久久 | 国产在线精品一区二区三区不卡 | 一级毛片免费观看在线 | 国产精品久久久久久久久久三级 | 国产精品av久久久久久网址 | 激情久久免费视频 | 在线a毛片免费视频观看 | 精品中文字幕久久久久四十五十骆 | 免费毛片在线视频 | 毛片免费大全短视频 | 日本中文不卡视频 | 国产精品99久久免费观看 | 插插操| 久久伊人国产精品 | 欧美一区2区三区4区公司二百 | 国产三级三级三级三级 | 激情小说区 | 欧美成人免费在线视频 | av在线免费电影 | 成人性生活视频在线观看 | 欧美成人精品不卡视频在线观看 | 欧美一级成人一区二区三区 | 亚洲经典视频 | 国产精品男女 | 精品国产91久久久久 | 欧美级毛片 | 亚洲人成中文字幕在线观看 | 中文字幕电影免费播放 | 一级在线视频 | 毛片网站视频 |