我想阻止几个号码的来电,因为我想写一个我自己的应用程序。 那么我应该使用哪些API?
基本上我希望在来电时收到通知,我想比较数字,如果它是我要阻止的,我想要切断电话或将其静音,或者如果可能的话将其静音并记录下来。
答案 0 :(得分:64)
OMG !!!是的,我们可以做到! 经过长达24小时的调查和发现后,我才会自杀...但我找到了“新鲜”的解决方案!
// "cheat" with Java reflection to gain access to TelephonyManager's
// ITelephony getter
Class c = Class.forName(tm.getClass().getName());
Method m = c.getDeclaredMethod("getITelephony");
m.setAccessible(true);
telephonyService = (ITelephony)m.invoke(tm);
所有想要开发其呼叫控制软件的数百人都访问this start point
有一个项目。并且有重要的评论(和学分)
简要说明:复制aidl文件,添加清单权限,复制粘贴源以进行电话管理)))
为您提供更多信息。 AT命令只有在你扎根的情况下才能发送。你可以杀死系统进程并发送命令,但你需要重新启动才能让你的手机接收和发送电话=)))
我非常讨厌=)现在我的Shake2MuteCall会得到更新!
答案 1 :(得分:5)
这是可能的,您不需要自己编码。
如果incomingNumber等于空字符串,只需将振铃器音量设置为零并将振动设置为无。多数民众赞成......
它刚刚为您完成了Android Market的Nostalk应用程序。试一试......
答案 2 :(得分:3)
您只需将联系人中的特定号码重定向到语音邮件即可。这已经得到了支持。
否则我想“联系人”的文档将是一个开始寻找的好地方。
答案 3 :(得分:3)
在android-N中,此功能包含在其中。检查{N}的Number-blocking更新
Android N现在支持平台中的数字阻止并提供了一个 框架API,让服务提供商维护一个阻塞号码列表。 默认的SMS应用程序,默认的手机应用程序和提供商应用程序可以读取 来自并写入阻止号码列表。该列表无法访问 到其他应用程序。
的优点是:
有关详细信息,请参阅android.provider.BlockedNumberContract
更新现有项目。
要针对 Android N平台编译您的应用,您需要使用 Java 8开发工具包(JDK 8),并且为了使用某些工具< strong> Android Studio 2.1 ,您需要安装 Java 8 Runtime Environment(JRE 8)。
打开模块的 build.gradle 文件,并按如下方式更新值:
android {
compileSdkVersion 'android-N'
buildToolsVersion 24.0.0 rc1
...
defaultConfig {
minSdkVersion 'N'
targetSdkVersion 'N'
...
}
...
}
答案 4 :(得分:0)
您可以通过听电话事件来做到这一点。您可以通过将BroadcastReceiver设置为PHONE_STATE和NEW_OUTGOING_CALL来实现。您在这里找到电话号码。
然后,当您决定结束通话时,这会有些棘手,因为只有在Android P上,它才能保证正常工作。选中here。