java - 如何在android中调用时隐藏调用的号码

标签 java android telephonymanager

我想知道当用户从 Android 设备调用任何电话时,我们如何从屏幕上隐藏调用的号码。不想让用户从应用程序中看到调用的号码。在我的应用程序中,我正在使用 calling intent 并且它工作正常。但它显示默认拨号器。如何隐藏此拨号器并从历史记录中删除号码?

最佳答案

您需要以下权限:

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>    
<uses-permission android:name="android.permission.READ_CALL_LOG"/>
<uses-permission android:name="android.permission.WRITE_CALL_LOG"/>

无论何时启动调用 Intent ,您都需要启动一个正在进行的服务 register a listener to listen to calls events (以准确检测通话开始和结束的时间)。 当服务检测到拨出调用开始时,它应该放置一个全屏 View LayoutParams.TYPE_SYSTEM_ALERT Window LayoutParam,这将使 View 位于屏幕上其他所有内容的“顶部”,包括调用 UI。 参见 thisthis

当通话结束时,确保从窗口中删除 View ,同时确保如果出现错误、崩溃或服务意外存在,请删除 View ,否则您可能会阻止用户从使用手机!

当通话结束时,服务应该add an Observer to the CallLog database当您检测到更改时,请检查最后一次通话是否是您的通话。 如果是这样,delete it .

附言 SYSTEM_ALERT_WINDOW 在您从 Google Play 安装应用程序时默认授予,在开发过程中,您需要在手机设置 > 应用程序 > 菜单/齿轮图标 > 权限 > “绘制其他应用程序”中手动启用它"> 为您的应用启用。 对于其他权限,您可能需要使用 Runtime Permissions接口(interface)

关于java - 如何在android中调用时隐藏调用的号码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47626442/

相关文章:

java - Spring 4.2.4。扩展通用接口(interface)的 Autowiring 列表

java - Toast 在真实设备上不起作用,但在模拟器上工作正常

java - 使用 GSON 解析 json 对象与 json 数组

来自文件的 Java 迷宫

android - 使用 Firebase push() 方法为用户提供唯一的子键值

android - 在 Android 中保存和恢复整个 fragment 堆栈

android - 使用服务获取 CallLog 上的最后一次通话

android - 如何在 Android 的服务类中实现 BroadcastReceiver?

java - Android 以编程方式接听电话

android - 试图以某种方式打印出 Android 上的信号强度