我想知道当用户从android设备拨打电话时如何隐藏屏幕上的拨号号码。不想让用户从应用程序中看到拨打的号码。在我的应用程序中,我正在使用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"/>
每当您启动呼叫意图时,就需要启动正在进行的服务,该服务将register a listener to listen to calls events(以准确检测呼叫何时开始和结束)。
当服务检测到呼出电话开始时,它应使用
LayoutParams.TYPE_SYSTEM_ALERT
窗口LayoutParam放置全屏视图,这将使该视图位于屏幕上所有其他内容(包括呼叫UI)的“顶部”。请参见this和this
通话结束后,请确保从“窗口”中删除该视图,并确保如果存在错误,崩溃或服务异常存在,请删除该视图,否则可能会阻止用户使用电话!
呼叫结束后,服务应add an Observer to the CallLog database,并且当您检测到更改时,请检查最后一个呼叫是否是您的呼叫。
如果是这样,请delete it。
压力
当您从Google Play安装应用程序时,默认情况下会授予
SYSTEM_ALERT_WINDOW
,在开发过程中,您需要在手机中手动启用它。设置>应用程序>菜单/齿轮图标>权限>“覆盖其他应用程序”>为您的启用应用程式。对于其他权限,您可能需要使用Runtime Permissions api