隨筆-348  評(píng)論-598  文章-0  trackbacks-0
          需要使用反射機(jī)制將ITelephony反射出來(lái)進(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)開(kāi)發(fā)

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

          評(píng)論:
          # re: Android彈出撥號(hào)界面和撥打電話實(shí)現(xiàn) 2012-04-04 11:12 | hello1719
          您好啊,我想問(wèn)一下,為什么我用這段代碼的時(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ù)  更多評(píng)論
            
          # re: Android彈出撥號(hào)界面和撥打電話實(shí)現(xiàn) 2012-04-04 18:23 | TiGERTiAN
          @hello1719
          跟AIDL沒(méi)啥關(guān)系吧,就是直接反射內(nèi)部類的內(nèi)部方法  回復(fù)  更多評(píng)論
            
          # re: Android彈出撥號(hào)界面和撥打電話實(shí)現(xiàn) 2012-04-06 10:19 | hello1719
          @TiGERTiAN
          嗯已經(jīng)解決了。。
            回復(fù)  更多評(píng)論
            
          # re: Android彈出撥號(hào)界面和撥打電話實(shí)現(xiàn) 2013-01-08 09:25 | xiaotang_hb
          請(qǐng)問(wèn)樓主,這里能改變,撥號(hào)界面和撥打界面嗎?顯示我的自定義界面UI?請(qǐng)教下,給我點(diǎn)思路。謝謝  回復(fù)  更多評(píng)論
            
          # re: Android彈出撥號(hào)界面和撥打電話實(shí)現(xiàn) 2016-03-08 16:45 | jaime
          請(qǐng)我dial和call方法有什么區(qū)別么?   回復(fù)  更多評(píng)論
            
          # re: Android彈出撥號(hào)界面和撥打電話實(shí)現(xiàn) 2016-03-09 10:44 | firetomato
          這找不到call是怎么回事?現(xiàn)在有別的方法實(shí)現(xiàn)這個(gè)功能嗎?  回復(fù)  更多評(píng)論
            
          主站蜘蛛池模板: 井冈山市| 巫山县| 蒙阴县| 化州市| 安庆市| 香河县| 阜城县| 平果县| 句容市| 汶川县| 历史| 长治市| 铁岭县| 右玉县| 靖宇县| 淅川县| 鹤峰县| 邵东县| 克山县| 望都县| 南华县| 揭阳市| 孙吴县| 克东县| 金昌市| 遂平县| 温泉县| 新乡县| 永修县| 昌吉市| 余干县| 收藏| 寻乌县| 精河县| 梅河口市| 岑巩县| 扶余县| 东乡县| 晴隆县| 新竹县| 迁西县|