隨筆-348  評論-598  文章-0  trackbacks-0
          需要使用反射機制將ITelephony反射出來進行操作。
          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();
                  }
              }


          ---------------------------------------------------------
          專注移動開發

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

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

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


          報錯內容是:Unhandled exception type InvocationTargetException

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

          慢慢混,慢慢學
          <2011年1月>
          2627282930311
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345

          常用鏈接

          留言簿(43)

          隨筆分類(402)

          隨筆檔案(306)

          相冊

          我的好友們

          搜索

          •  

          積分與排名

          • 積分 - 811919
          • 排名 - 50

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 许昌县| 保康县| 吉隆县| 那坡县| 东明县| 汾阳市| 阳泉市| 长阳| 龙门县| 南投县| 北海市| 吉木乃县| 东至县| 兴海县| 卓资县| 汕头市| 岳池县| 宽甸| 新宾| 时尚| 三江| 柯坪县| 商南县| 泾川县| 东方市| 长丰县| 怀柔区| 河西区| 阆中市| 武宁县| 平定县| 西林县| 巴林左旗| 盐津县| 全南县| 黄龙县| 石景山区| 淮滨县| 昭平县| 台东市| 德化县|