Android弹出拨号界面和拨打电话实现

    技术2025-08-11  12

    http://www.blogjava.net/TiGERTiAN/archive/2011/01/25/343499.html

     

    需要使用反射机制将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();        }    }

    最新回复(0)