如何在android中调用时隐藏拨打的号码

时间:2017-12-04 04:19:27

标签: java android telephonymanager

我想知道当用户从Android设备进行任何调用时,我们如何能够从屏幕隐藏拨打的号码。不希望允许用户从应用程序中查看拨打的号码。在我的应用程序中,我使用调用intent ,它工作正常。但它显示默认拨号器。如何隐藏此拨号器并从历史记录中删除号码?

1 个答案:

答案 0 :(得分:0)

您需要以下权限:

<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 Window LayoutParam放置一个全屏视图,这将使视图“在屏幕上”的所有其他内容“顶部”,包括呼叫UI。 请参阅thisthis

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

当通话结束时,服务应add an Observer to the CallLog database,当您检测到更改时,检查上次通话是否为您的通话。 如果是,delete it

<强> P.S 默认情况下,当您从Google Play安装应用时会授予SYSTEM_ALERT_WINDOW,在开发时,您需要在手机设置&gt;中手动启用它。应用&gt;菜单/齿轮图标&gt;权限&gt; “借鉴其他应用”&gt;启用您的应用。 对于其他权限,您可能需要使用Runtime Permissions api