privatevoiddial(String number) {
Classc=TelephonyManager.class;
Method getITelephonyMethod=null;try{
getITelephonyMethod=c.getDeclaredMethod("getITelephony",
(Class[])null);
getITelephonyMethod.setAccessible(true);
}catch(SecurityException e) {//TODO Auto-generated catch blocke.printStackTrace();
}catch(NoSuchMethodException e) {//TODO Auto-generated catch blocke.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 blocke.printStackTrace();
}catch(IllegalAccessException e) {//TODO Auto-generated catch blocke.printStackTrace();
}catch(SecurityException e) {//TODO Auto-generated catch blocke.printStackTrace();
}catch(NoSuchMethodException e) {//TODO Auto-generated catch blocke.printStackTrace();
}catch(InvocationTargetException e) {//TODO Auto-generated catch blocke.printStackTrace();
}
}privatevoidcall(String number) {
Classc=TelephonyManager.class;
Method getITelephonyMethod=null;try{
getITelephonyMethod=c.getDeclaredMethod("getITelephony",
(Class[])null);
getITelephonyMethod.setAccessible(true);
}catch(SecurityException e) {//TODO Auto-generated catch blocke.printStackTrace();
}catch(NoSuchMethodException e) {//TODO Auto-generated catch blocke.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 blocke.printStackTrace();
}catch(IllegalAccessException e) {//TODO Auto-generated catch blocke.printStackTrace();
}catch(SecurityException e) {//TODO Auto-generated catch blocke.printStackTrace();
}catch(NoSuchMethodException e) {//TODO Auto-generated catch blocke.printStackTrace();
}catch(InvocationTargetException e) {//TODO Auto-generated catch blocke.printStackTrace();
}
}
这段代码展示了如何通过反射技术访问并调用Android系统的TelephonyManager类的私有方法getITelephony(),然后进一步调用dial()或call()方法来拨打电话。这个过程涉及到权限控制、异常处理等多个步骤。
397

被折叠的 条评论
为什么被折叠?



