怎样通过代码实现呼叫转移

怎样通过代码实现呼叫转移,第1张

 原理剖析:

1 这个问题以前困扰了我很久,前天在地铁上突发奇想,猛然醒悟,回家测试,ok

2 短信防火墙利用短信广播接收者,过滤短信,终止黑名单发来的短信广播即可,较为简单,不说了

3 电话防火墙比较复杂,我当初本来已经实现了,可是老想着再完美一点,搞来搞去,总是实现不了,后来才知道,原来360做得也并不是完美的。他们是用了

a 在android10后,google很执着的关闭了终止电话的endcall的api,但是实际上这个方法仍然在电话服务里面存在着,所以,我们可以利用java的反射原理将其获取出来。电话服务是另外一个进程,所以我们需要用到aidl不同进程的通信

b endcall方法获得后,在onCallStateChanged(别跟我说你不知道这个是什么)方法对来电状态进行监听,如果发现时黑名单号码,先静音,然后调用endcall方法终止

c 执行endcall方法后,默认是提示忙音的,如果你想要提示别的,可以通过来电转移来实现。你可以激发其它的意图,比如移动号程序控制拨打67#电话号码#等进行呼叫转移,你故意转移到一个停机的好,黑名单的拨打着将听到停机的提示音,你转移到关机的好,人家也会听到关机的提示音,我当初就是在这里想叉了,shit,浪费了好多天,一直在纠结

d 如果你不能执行呼叫转移,那应该是你的运营商不支持,你打客服问问怎么执行呼叫转移,反正我有移动和电信的手机,都是没问题的

e 有些机器不给力,你并不一定能获取到来电手机号,比如如果你是华为的什么c8500或c8600,那么我可以告诉你,太不给力了,十之八九你获取不到来电手机(短信可以),我的一个三星i5700获取是没问题的,如果你试验不成功,建议你先systemout一下你是否是获取到了手机号了

公司完成的东西,不方便公开代码,重点代码我贴出来

反射的代码:

Method method = ClassforName("androidosServiceManager")getMethod("getService", Stringclass);

IBinder binder = (IBinder)methodinvoke(null, new Object[]{TELEPHONY_SERVICE});

ITelephony telephony = ITelephonyStubasInterface(binder);

telephonyendCall();

复制代码呼叫转移设置的代码:

String str1 = "tel:";

String str2 = "6713810538911%23";//拨打这个手机将产生空号 移动的做法

//其实就是设置需要转移的代码

Intent localIntent = new Intent();

localIntentsetAction("androidintentactionCALL");

Systemoutprintln("start new Intent first");

Uri localUri = Uriparse(str1 + str2);

localIntentsetData(localUri);

startActivity(localIntent);

Systemoutprintln("start new Intent end");

复制代码静音的,记住静音在黑名单电话响起时,恢复在挂断电话后,记得恢复

AudioManager audioManager = (AudioManager) getSystemService(ContextAUDIO_SERVICE);

if (audioManager != null) {

audioManagersetRingerMode(AudioManagerRINGER_MODE_SILENT);

audioManagergetStreamVolume(AudioManagerSTREAM_RING);

}

package test;

class Telephone{//第一个类:Telephone

public String name;//品牌

public String num;//号码

public int time;//通话时间

public double result(){//计算话费的方法,返回计算结果

return 0;

}

public String toString(){//显示信息方法

return "品牌:"+name+" 号码:"+num+" 通话时间:"+time;

}

}

class Mobilephone extends Telephone{//第二个类:Mobilephone,通过继承将拥有第一个类的属性与方法

public String type;//网络类型

public int bjtime;//被叫时间

public double result(){//计算话费的方法,返回计算结果

return 0;

}

public String toString(){//显示信息方法

return "品牌:"+name+" 号码:"+num+" 通话时间:"+time+" 网络类型:"+type+" 被叫时间:"+bjtime;

}

}

public class Ok {//主类调用以上两个类

public static void main(String[] args) {

Telephone tel=new Telephone();

telresult();

teltoString();//调用Telephone类的计算话费的方法与显示信息的方法

Mobilephone mob=new Mobilephone();

mobresult();

mobtoString();//调用Mobilephone类的计算话费的方法与显示信息的方法

}

}

//已经写好了,希望你满意。。。

java程式能不能呼叫qq的api-CSDN论坛 public String sendPostRequest(String url) {

StringBuffer stringBuffer = new StringBuffer("");

try {

URL postUrl = new URL(url);

>

这个你肯定需要电信的支持或者华为的语音支持或者青牛的支持,

一般他们会给你控件调用的

我们现在采用的是B/S系统但是纯BS是不行的我们采用的是把供应商的DLL打包做成ActiveX控件支持的

为了在您的机器上配置起一个Java开发环境——您将使用一个“开发环境”来“开发”(编写)程序——您需要完成以下这些步骤:

1下载一个包含Java开发环境(编译器和其他工具)的大文件。点击“下载J2SE SDK”链接下载SDK(软件开发工具包)软件。网页会显示一个许可协议。点击“接受”。选择您的 *** 作系统,然后将文件保存到下载目录中。这是一个巨大的文件,用电话调制解调器下载需要好几个小时。接下来的两个文件也很大。

2下载一个包含Java文档的大文件。选择 *** 作系统后点击SDK141文档的链接。

3如果您的机器上还没有安装WinZip(或可执行相同功能的程序),那么您需要下载一个包含WinZip的大文件并安装之。如果您的机器上没有安装某个的版本的WinZip或其他解压缩软件,下载WinZip的试用版。运行EXE文件安装。很快我们将使用它来安装文档。

4安装Java开发环境。运行第一步下载的j2sdk-1_4_1-exe文件。他将自动解压并安装开发工具包。

5安装文档。阅读安装说明文档。它会要求您将文档文件移至刚才开发工具包的安装目录。将文档解压缩,文件就会被安排到适当的位置。

6调整环境变量。按照此页的要求,您需要改变路径变量。最简单的办法是打开一个MS-DOS窗口键入PATH看看当前的路径变量是什么,然后用记事本打开autoexecbat按要求修改PATH环境变量。

7全面测试。现在您应该可以打开另一个MS-DOS窗口并键入javac了。如果一切设置妥当,那么您将看到屏幕将输出两行文字告诉您如何使用javac。这意味着一切已经准备就绪了。如果您看到“错误的命令或文件名”这条消息,则说明还没有准备好。请重新阅读安装说明检查哪里出了问题。确定PATH被正确设置并可用。回头重新阅读上面的步骤,问题不解决不要轻易放弃。现在您已自豪地拥有一台能够编译Java程序的机器了。您已经准备好开始编写软件了!

顺便指出,刚才您解压缩的内容包括一个demo(演示)目录,其中包含许多精致的例子。所有的例子都可以立即执行,所以您不妨找到这个目录试运行一下其中的某些例子。许多例子都会发声,所以请打开扬声器。要运行例子,找到名如example1html的网页文件并使用您常用的浏览器打开即可。

您的第一个程序将是小巧可爱的。它将建立一个绘图区域并在其上绘制一条对角线。创建此程序您需要:

1打开记事本键入(或复制粘贴)程序 。建立一个新目录以保存程序。打开记事本(或其他可以创建TXT文件的文本编辑器)。将范例程序录入或复制粘贴到记事本窗口中。切记:输入程序的大小写敏感。因此必须按照范例程序中字母的大小写输入。重审以上编程步骤。如果录入内容和范例程序不是完全一致,则程序将无法正常运行。

2保存程序 。将文件在第一步创建的路径下保存,文件名为FirstAppletjava。文件名大小写敏感。请确保字母“F”和“A”大写,其他字母小写,如前所示。

3使用Java编译器编译程序生成一个Java程序 。

打开一个MS-DOS窗口。改变至包含FirstAppletjava的路径下(cd),键入:

javac FirstAppletjava

记住大小写敏感!或者编译成功,这时屏幕不输出任何信息,或者有错误发生。若没有错误,则会在目录里生成一个名为FirstAppletclass的文件与FirstAppletjava并列。

(请确保程序保存的文件名为FirstAppletjava而不是FirstAppletjavatxt。最简单的办法就是在MS-DOS窗口下键入dir然后查看文件名。若扩展名是txt 则请重命名文件去掉此扩展名。也可以运行Windows资源管理器在“查看”菜单下点击“选项”。确保“隐藏已注册的MS-DOS文件扩展名”选项处于未选中状态,然后在资源管理器中查看文件名。若需要则将文件改名。)

4排除问题。若有问题产生则想办法解决。将您的程序与上面的范例程序对比,使之完全相同。修改过程中不断编译程序,直到没有错误发生。

5建立一个HTML网页“包含”刚创建的Java程序 。

创建一个HTML页面来包含小程序。另开一个记事本窗口。录入下面的内容:

将此文件存于同一目录中,文件名为applethtm。

1运行Java程序 。

在您的MS-DOS窗口中键入:

appletviewer applethtm

应该可以看见一条从左上角到右下角的对角线:(如上图所示)

将小程序查看器的窗口拉大一些以查看整条对角线。您也可以将此HTML网页装载到任何现用的浏览器中,如Netscape Navigator或微软IE,看到的结果是大致相同的。

使用Java语言编程就需要一个Java编译器。下一节将指导您下载并安装一个编译器。一旦有了编译器我们就可以开始学习编程了。下载和安装过程将会持续几个小时,大部分时间用来下载几个很大的文件。您还需要有大约40兆字节的空闲磁盘空间(开始前请确定有足够的空间)。

这里是本节的示范程序:

import javaawtGraphics;

public class FirstApplet extends javaappletApplet

{

public void paint(Graphics g)

{

gdrawLine(0, 0, 200, 200);

}

}

以上就是关于怎样通过代码实现呼叫转移全部的内容,包括:怎样通过代码实现呼叫转移、1、 编写一个Java程序,程序中有一个类Telephone, Telephone类中包含有电话品牌、、java程式能不能呼叫qq的api-CSDN论坛等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10136263.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存