我想知道当用户从 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。
参见 this和 this
当通话结束时,确保从窗口中删除 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/