隨筆-348  評論-598  文章-0  trackbacks-0
          需要使用反射機(jī)制將ITelephony反射出來進(jìn)行操作。
          private void dial(String number) {
                  Class
          <TelephonyManager> c = TelephonyManager.class;
                  Method getITelephonyMethod 
          = null;
                  
          try {
                      getITelephonyMethod 
          = c.getDeclaredMethod("getITelephony",
                              (Class[]) 
          null);
                      getITelephonyMethod.setAccessible(
          true);
                  } 
          catch (SecurityException e) {
                      
          // TODO Auto-generated catch block
                      e.printStackTrace();
                  } 
          catch (NoSuchMethodException e) {
                      
          // TODO Auto-generated catch block
                      e.printStackTrace();
                  }

                  
          try {
                      TelephonyManager tManager 
          = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
                      Object iTelephony;
                      iTelephony 
          = (Object) getITelephonyMethod.invoke(tManager,(Object[]) null);
                      Method dial 
          = iTelephony.getClass().getDeclaredMethod("dial", String.class);
                      dial.invoke(iTelephony, number);
                  } 
          catch (IllegalArgumentException e) {
                      
          // TODO Auto-generated catch block
                      e.printStackTrace();
                  } 
          catch (IllegalAccessException e) {
                      
          // TODO Auto-generated catch block
                      e.printStackTrace();
                  } 
          catch (SecurityException e) {
                      
          // TODO Auto-generated catch block
                      e.printStackTrace();
                  } 
          catch (NoSuchMethodException e) {
                      
          // TODO Auto-generated catch block
                      e.printStackTrace();
                  } 
          catch (InvocationTargetException e) {
                      
          // TODO Auto-generated catch block
                      e.printStackTrace();
                  }
              }
              
              
          private void call(String number) {
                  Class
          <TelephonyManager> c = TelephonyManager.class;
                  Method getITelephonyMethod 
          = null;
                  
          try {
                      getITelephonyMethod 
          = c.getDeclaredMethod("getITelephony",
                              (Class[]) 
          null);
                      getITelephonyMethod.setAccessible(
          true);
                  } 
          catch (SecurityException e) {
                      
          // TODO Auto-generated catch block
                      e.printStackTrace();
                  } 
          catch (NoSuchMethodException e) {
                      
          // TODO Auto-generated catch block
                      e.printStackTrace();
                  }

                  
          try {
                      TelephonyManager tManager 
          = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
                      Object iTelephony;
                      iTelephony 
          = (Object) getITelephonyMethod.invoke(tManager,(Object[]) null);
                      Method dial 
          = iTelephony.getClass().getDeclaredMethod("call", String.class);
                      dial.invoke(iTelephony, number);
                  } 
          catch (IllegalArgumentException e) {
                      
          // TODO Auto-generated catch block
                      e.printStackTrace();
                  } 
          catch (IllegalAccessException e) {
                      
          // TODO Auto-generated catch block
                      e.printStackTrace();
                  } 
          catch (SecurityException e) {
                      
          // TODO Auto-generated catch block
                      e.printStackTrace();
                  } 
          catch (NoSuchMethodException e) {
                      
          // TODO Auto-generated catch block
                      e.printStackTrace();
                  } 
          catch (InvocationTargetException e) {
                      
          // TODO Auto-generated catch block
                      e.printStackTrace();
                  }
              }


          ---------------------------------------------------------
          專注移動(dòng)開發(fā)

          Android, Windows Mobile, iPhone, J2ME, BlackBerry, Symbian
          posted on 2011-01-25 14:38 TiGERTiAN 閱讀(10014) 評論(6)  編輯  收藏 所屬分類: Android

          評論:
          # re: Android彈出撥號界面和撥打電話實(shí)現(xiàn) 2012-04-04 11:12 | hello1719
          您好啊,我想問一下,為什么我用這段代碼的時(shí)候,有兩句報(bào)錯(cuò)呢?如下所示

          iTelephony = (Object) getITelephonyMethod.invoke(tManager,(Object[]) null);
          dial.invoke(iTelephony, number);


          報(bào)錯(cuò)內(nèi)容是:Unhandled exception type InvocationTargetException

          您順便能把ITelephony.aidl 文件內(nèi)容發(fā)一下嗎?是不是我少添加了什么內(nèi)容呢?  回復(fù)  更多評論
            
          # re: Android彈出撥號界面和撥打電話實(shí)現(xiàn) 2012-04-04 18:23 | TiGERTiAN
          @hello1719
          跟AIDL沒啥關(guān)系吧,就是直接反射內(nèi)部類的內(nèi)部方法  回復(fù)  更多評論
            
          # re: Android彈出撥號界面和撥打電話實(shí)現(xiàn) 2012-04-06 10:19 | hello1719
          @TiGERTiAN
          嗯已經(jīng)解決了。。
            回復(fù)  更多評論
            
          # re: Android彈出撥號界面和撥打電話實(shí)現(xiàn) 2013-01-08 09:25 | xiaotang_hb
          請問樓主,這里能改變,撥號界面和撥打界面嗎?顯示我的自定義界面UI?請教下,給我點(diǎn)思路。謝謝  回復(fù)  更多評論
            
          # re: Android彈出撥號界面和撥打電話實(shí)現(xiàn) 2016-03-08 16:45 | jaime
          請我dial和call方法有什么區(qū)別么?   回復(fù)  更多評論
            
          # re: Android彈出撥號界面和撥打電話實(shí)現(xiàn) 2016-03-09 10:44 | firetomato
          這找不到call是怎么回事?現(xiàn)在有別的方法實(shí)現(xiàn)這個(gè)功能嗎?  回復(fù)  更多評論
            
          專注移動(dòng)開發(fā)--Windows Mobile, Android, iPhone, J2ME, BlackBerry, Symbian, Windows Phone

          慢慢混,慢慢學(xué)
          <2016年3月>
          282912345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          留言簿(43)

          隨筆分類(402)

          隨筆檔案(306)

          相冊

          我的好友們

          搜索

          •  

          積分與排名

          • 積分 - 812916
          • 排名 - 50

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 绥江县| 东乡县| 施甸县| 陆良县| 陆丰市| 祁门县| 隆子县| 仙游县| 沿河| 临澧县| 五家渠市| 徐闻县| 新晃| 云林县| 榆社县| 泾源县| 邛崃市| 色达县| 禹城市| 大埔区| 广元市| 民权县| 台州市| 黔西| 工布江达县| 望江县| 聂拉木县| 江津市| 延寿县| 本溪| 濉溪县| 屏边| 汶上县| 温泉县| 襄樊市| 勐海县| 长武县| 哈尔滨市| 浦北县| 阿克苏市| 大兴区|