2

我正在使用自定义 PIN 构建自定义 Android 锁定屏幕。我希望允许用户接听来电,而无需输入 PIN 码,也不会影响手机的安全性。

Next Lock Screen 和 GoLocker 都具有此功能。

两种不好的选择:(1)强制用户输入 PIN 或(2)当用户接到电话时完全解锁手机

请问有什么建议吗?

谢谢!

4

1 回答 1

0

只需使用广播接收器收听TelephonyManager状态并决定要做什么。注册一个接收器:

<intent-filter>
    <action android:name="android.intent.action.PHONE_STATE"/>
</intent-filter>

...并且每当 onReceive 开始检查是否...

intent.getStringExtra(TelephonyManager.EXTRA_STATE) == TelephonyManager.EXTRA_STATE_RINGING

这意味着你正在接到一个电话,所以你可以隐藏你的“锁定屏幕”,但这将是一个重大的安全漏洞 - 谁拥有这个人的号码和 SIM 卡密码解锁的手机(例如,刚刚偷了它并且碰巧知道的人您的号码...)只会通过伪造电话来终止您的“自定义 PIN”功能。

如果您想通过您的应用程序直接接听电话,那么您将处于非常不同的境地,但问题不止于此 - Android 不允许非特权应用程序(非 root)接听电话,而我所知道的所有方法要么是反射类型的黑客攻击,要么是“蓝牙耳机按下”仿真类型,要么是不再工作的 shell 程序调用类型......没有什么能在设备上始终如一地工作,你必须混合和匹配,并且某些设备将需要条件,因为尝试其中一个可能会使特定的 rom 崩溃。这就是为什么市场上不再存在许多真正的“通话中屏幕”应用程序,只是在通话前触发系统通话中屏幕的拨号器,或者在接听电话时覆盖在系统屏幕顶部的拨号器(这几乎可以做到我所做的)在这个答案的开头描述)。

于 2016-05-04T17:45:07.963 回答