「java来电转接」来电转接是啥
本篇文章给大家谈谈java来电转接,以及来电转接是啥对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
如何在Android程序中实现来电转移功能
在Android程序中实现来电转移功能,这里以黑名单功能为例子。
实现的情况
当黑名单来电时,提示它为空号、关机等。
代码步骤
定义所需布局:list.xml,Java代码。
初始化View ,Java代码。
定义ContactsAdapter 用于列出使用联系人 ,Java代码。
其中 getNameById() getNumberById() 可以根据position 返回联系人的名字和号码 。
ContactsAdapter 实例化 。
当按下btnOK 得到所有黑名单 并返回给前Activity:BlacklistMain。
loadContactsChecked 用于获取所有选中联系人列表,并返回之 。
至此 黑名单列表选取已经完成。
我想只针对某一个号码设置呼叫转移,或者自动不接收其短信,怎么设置?
不是智能机也可以下载个360手机安全卫士java版啊 里面有个来电防骚扰功能 把骚扰你的那个人的号码键入黑名单 如果联系人里面有这个人就直接把他号码加入就行了 里面有相应的选项 什么来电忙音 不在服务区 关机 等回复来电选项
怎样通过代码实现呼叫转移
原理剖析:
1 这个问题以前困扰了我很久,前天在地铁上突发奇想,猛然醒悟,回家测试,ok
2 短信防火墙利用短信广播接收者,过滤短信,终止黑名单发来的短信广播即可,较为简单,不说了
3 电话防火墙比较复杂,我当初本来已经实现了,可是老想着再完美一点,搞来搞去,总是实现不了,后来才知道,原来360做得也并不是完美的。他们是用了
a 在android1.0后,google很执着的关闭了终止电话的endcall的api,但是实际上这个方法仍然在电话服务里面存在着,所以,我们可以利用java的反射原理将其获取出来。电话服务是另外一个进程,所以我们需要用到aidl不同进程的通信
b endcall方法获得后,在onCallStateChanged(别跟我说你不知道这个是什么)方法对来电状态进行监听,如果发现时黑名单号码,先静音,然后调用endcall方法终止
c 执行endcall方法后,默认是提示忙音的,如果你想要提示别的,可以通过来电转移来实现。你可以激发其它的意图,比如移动号程序控制拨打**67#电话号码#等进行呼叫转移,你故意转移到一个停机的好,黑名单的拨打着将听到停机的提示音,你转移到关机的好,人家也会听到关机的提示音,我当初就是在这里想叉了,shit,浪费了好多天,一直在纠结
d 如果你不能执行呼叫转移,那应该是你的运营商不支持,你打客服问问怎么执行呼叫转移,反正我有移动和电信的手机,都是没问题的
e 有些机器不给力,你并不一定能获取到来电手机号,比如如果你是华为的什么c8500或c8600,那么我可以告诉你,太不给力了,十之八九你获取不到来电手机(短信可以),我的一个三星i5700获取是没问题的,如果你试验不成功,建议你先system.out一下你是否是获取到了手机号了
公司完成的东西,不方便公开代码,重点代码我贴出来
反射的代码:
Method method = Class.forName("android.os.ServiceManager").getMethod("getService", String.class);
IBinder binder = (IBinder)method.invoke(null, new Object[]{TELEPHONY_SERVICE});
ITelephony telephony = ITelephony.Stub.asInterface(binder);
telephony.endCall();
复制代码呼叫转移设置的代码:
String str1 = "tel:";
String str2 = "**67*13810538911%23";//拨打这个手机将产生空号 移动的做法
//其实就是设置需要转移的代码
Intent localIntent = new Intent();
localIntent.setAction("android.intent.action.CALL");
System.out.println("start new Intent first...");
Uri localUri = Uri.parse(str1 + str2);
localIntent.setData(localUri);
startActivity(localIntent);
System.out.println("start new Intent end...");
复制代码静音的,记住静音在黑名单电话响起时,恢复在挂断电话后,记得恢复
AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
if (audioManager != null) {
audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
audioManager.getStreamVolume(AudioManager.STREAM_RING);
}
java来电转接的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于来电转接是啥、java来电转接的信息别忘了在本站进行查找喔。