这里只提供一个大概的思路,整个流程不是我一个人就能完成的。测试机型为htc one x,Android版本4.2.2,已ROOT。
要实现拨号程序可能很简单,一个简单的Intent就能实现,从发出意图到真正实现拨号的代码中间还执行了很多其他方法,这都是android底层源码自动实现的,其中就包含了启动拨号的Activity。要想实现不弹出拨号界面就实现拨号,就必须绕过中间这些方法,直接调用framework层中的拨号方法。详情可以去看下别人写的android拨号流程,就可知道真正实现拨号的方法。
这里先贴出我写的代码:
public static void Call(String number, Context context) {
PhoneFactory.makeDefaultPhones(context);
Phone p = PhoneFactory.getDefaultPhone();
CallManager cm = CallManager.getInstance();
cm.registerPhone(p);
Phone phone = cm.getDefaultPhone();
try {
phone.dial(number);
} catch (CallStateException e) {
e.printStackTrace();
}
}一开始是想通过反射调用底层方法,但是我当初试过,好像不能实现,所以最后直接调用底层方法,由于android本身并未提供相关的类或方法,所以必须引用额外的jar包(将android源码编译打包成jar)。这里我用的是某位大神将android2.2的部分源码编译成的jar包。
然后是权限申明:
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.p

本文详细介绍了如何在Android系统中实现不通过拨号界面直接进行拨号的功能,包括代码实现、权限声明、系统伪装等关键步骤。通过使用特定的jar包调用底层方法,并在manifest文件中设置相应的权限和系统标签,最终实现了一个能够直接调用拨号功能的程序。

487

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



