【问题标题】:How to hide dialled number while calling in android如何在android中拨打电话时隐藏拨打的号码
【发布时间】:2017-12-04 04:19:26
【问题描述】:

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

【问题讨论】:

  • 我认为您不可能处理系统应用程序行为(据我所知)。你有没有看到任何应用程序做同样的事情?
  • @ADM ,我不想覆盖系统应用程序,而只想在系统应用程序上方显示一个覆盖层以隐藏拨号器视图并从历史记录中删除该号码。没见过这样的应用。
  • 我想是的。好吧,您可能只需要使用广播接收器收听电话状态。在来电时在屏幕上绘制一个视图。这样,整个屏幕将消失在您的叠加视图后面。由于您不知道屏幕上数字的确切位置,因此这是一个非常麻烦的隐藏数字。
  • 这听起来像是非常糟糕的用户体验,你能解释一下这种情况的原因吗?
  • @marmor 我期待使用本机意图从应用程序呼叫用户,但用户不应该在通话结束后获得拨打的号码。对于接收方用户,它不是强制性的(可以查看号码,因为我们无法更改它吗?)。只是出于隐私原因。

标签: java android telephonymanager


【解决方案1】:

您需要以下权限:

<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。 见this和this

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-26
    • 2018-03-09
    • 1970-01-01
    • 1970-01-01
    • 2021-01-18
    • 1970-01-01
    相关资源
    最近更新 更多