随着新的Android 12操作系统,用户现在有能力完全禁用麦克风和相机使用的所有应用程序。这实际上是一件好事,让用户轻松地控制隐私。
如果一个应用程序启动并拥有使用麦克风和摄像头的权限,并且用户已经禁用了对这些硬件的所有访问,那么Android 12会自动弹出一个警报,要求用户重新启用麦克风或照相机,或者继续禁用该应用程序的硬件。
此外,在创建时,应用程序可以简单地检查开始时是否启用了所需的硬件,并且还可以进一步提示用户或处理应用程序认为合适的条件。
但是,如果用户在应用程序运行时禁用麦克风或照相机怎么办?我似乎找不到像onMicrophoneEnabled()
这样的接口,甚至连这样一个事件的广播都找不到。
每次调用onResume()
时都可以检查,但我希望有一个更优雅的解决方案。
如果有人知道一些东西,我的应用程序可以用来捕捉当用户作出任何改变时,请告诉我。
发布于 2022-04-29 13:01:33
在仔细阅读了google (https://developer.android.com/training/permissions/explaining-access#toggles)关于用户启用/禁用相机和麦克风的实现之后,我发现了一些非常有趣的东西:
明确禁止应用程序知道用户是否做过任何这些操作。因此,当然,没有办法得到这些变化的通知:这是出于设计。
如果用户以这种方式关闭相机,该应用程序仍将得到一个摄像头饲料,但它将是黑色的。同样,麦克风仍能工作,但我们只能保持沉默。这是一项功能--一种确保隐私的方法。
操作系统将提醒用户,他们已经禁用麦克风或相机,并提供了一个机会,重新启用硬件,这是很好的。但是这个应用程序完全处于黑暗之中。
另一种思考方法是:就像把一盘磁带放在相机上或者拇指放在麦克风上一样。只是这次是由操作系统来完成的。这样,间谍程序或其他邪恶的软件仍然会认为它是有效的,而不是试图绕过或放弃。
这也解释了为什么在onResume()
或onWindowFocusChanged()
期间的测试也不起作用。我得到的结果与设置不一致(它们与当前权限对齐)。
因此,要回答我的问题:是不可能得到通知的,。这才是重点。
https://stackoverflow.com/questions/72006416
复制相似问题