Android 12:检测用户是否禁用/启用相机和麦克风

2023-12-09

借助新的 Android 12 操作系统,用户现在可以完全禁用所有应用程序中的麦克风和摄像头使用。这其实是一件好事,让用户轻松掌控隐私。

如果应用程序启动并有权使用麦克风和摄像头,并且用户已禁用对这些硬件的所有访问权限,Android 12 会自动弹出警报,要求用户重新启用麦克风或摄像头,或者继续该应用程序的硬件已禁用。

此外,在创建时,应用程序可以简单地检查何时开始查看所需的硬件是否已启用,并且还可以进一步提示用户或根据应用程序认为合适的情况处理条件。

但是如果用户禁用麦克风或摄像头怎么办while该应用程序正在运行?我似乎找不到类似的接口onMicrophoneEnabled()甚至是此类事件的广播。

每次都可以检查一下onResume()被称为,但我希望有一个更优雅的解决方案。

如果有人知道当用户以任何方式进行更改时我的应用程序可以使用某些东西来捕获此信息,请告诉我。


After 小心阅读谷歌文档(https://developer.android.com/training/permissions/explaining-access#toggles)在他们实现用户启用/禁用摄像头和麦克风时,我发现了一些非常有趣的事情:

明确禁止应用程序了解用户是否执行了任何这些操作。因此,当然没有办法获得这些更改的通知:这是设计使然。

如果用户以这种方式关闭相机,应用程序仍然会获得相机反馈,但它会是黑色的。同样,麦克风仍然可以工作,但我们只会得到沉默。这是一项功能——确保隐私的一种方式。

操作系统会提醒用户他们已禁用麦克风或摄像头,并提供重新启用硬件的机会,这很好。但该应用程序完全处于黑暗之中(呵呵)。

另一种思考方式:就像在相机上贴一块胶带或在麦克风上贴上拇指一样。只是这一次是由操作系统完成的。这样,间谍程序或其他一些恶意软件仍会认为它正在工作,而不会尝试绕过或放弃。

这也解释了为什么测试期间onResume() or onWindowFocusChanged()也没用。我得到的结果与设置不符(它们与当前权限一致)。

所以回答我的问题:有没有办法得到通知。这就是我想说的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 12:检测用户是否禁用/启用相机和麦克风 的相关文章

  • getItem 与 getItemAtPosition

    有两种方法可以获取列表视图中的选定项目 list getAdapter getItem position list getItemAtPosition position 我的问题是 哪一种是首选的做法 我见过人们同时使用这两种方法 您可以使
  • 使用 Android 前台服务为 MediaPlayer 创建通知

    问题就在这里 我目前正在开发一个应用程序 该应用程序必须提供 A 广播播放器 来自 URL 的 AAC 直播 还有一个播客播放器 来自 URL 的 MP3 流 该应用程序必须能够在后台运行 Android 服务 并通过以下方式向用户公开持续
  • 导航组件重复 NavArgs 的问题

    我有一个片段 class SomeFragment private val args by navArgs
  • Android SoundPool 堆限制

    我正在使用 SoundPool 加载多个声音剪辑并播放它们 据我所知 它的功能 100 正确 但在 load 调用期间 我的日志中充斥着以下内容 06 09 11 30 26 110 ERROR AudioCache 23363 Heap
  • 在自定义对象中创建时粘性服务不会重新启动

    我有一个具有绑定服务的单例对象 我希望它重新启动 当我从启动器启动应用程序时 单例对象将初始化并绑定到这个现有的服务实例 以下是在单例中创建和绑定服务的代码 public class MyState private static MySta
  • Android:“dp”到“px”转换?

    我正在读这篇文章 http developer android com guide practices screens support html http developer android com guide practices scre
  • Delphi XE7 Android 全屏(隐藏软键)

    如何在XE7中全屏显示 隐藏顶部 标题 和底部 软键 工具栏 在 XE6 中 我可以通过在应用程序部分写入来调整 AndroidManifest 以使我的应用程序全屏显示并且没有操作栏 android theme android style
  • 线程自动利用多个CPU核心?

    假设我的应用程序运行 2 个线程 例如渲染线程和游戏更新线程 如果它在具有多核 CPU 当今典型 的移动设备上运行 我是否可以期望线程在可能的情况下自动分配给不同的核心 我知道底层操作系统内核 Android linux内核 决定调度 我的
  • TextView 之间有分隔线

    我正在尝试在 android studio 中创建以下布局 因为我对 android 东西还很陌生 所以我第一次尝试使用 LinearLayout 并认为这可能无法实现 现在我正在尝试使用RelativeLayout 我已经用颜色创建了这个
  • 如何在 sqlite 中将 2 列合并为新列

    我有一个包含 3 列的表 我必须将 2 列中的值按降序排列到一列中 A B C z 1 2 f 5 7 s 9 5 使用此示例 输出会将 B 列和 C 列中的值放入其中 如下所示 A B s 9 f 7 f 5 s 5 z 2 z 1 我当
  • OnClick 事件中的 finish() 如何工作?

    我有一个Activity一键退出Activity 通过layout xml我必须设置OnClick事件至cmd exit调用 this finish 效果很好 public void cmd exit View editLayout thi
  • CookieManager.getInstance().removeAllCookie();不删除所有cookie

    我在应用程序的 onCreate 中调用 CookieManager getInstance removeAllCookie 我遇到了一个奇怪的问题 我看到 GET 请求中传递了意外的 cookie 值 事实上 cookie 值是一个非常非
  • Android相机意图:如何获取全尺寸照片?

    我正在使用意图来启动相机 Intent cameraIntent new Intent android provider MediaStore ACTION IMAGE CAPTURE getParent startActivityForR
  • Android Studio:无法启动守护进程

    当我尝试在 Android Studio 中导入 gradle 项目时 遇到以下错误 Unable to start the daemon process This problem might be caused by incorrect
  • 如何在不更改手机语言的情况下更改Android应用程序语言?

    我希望用户在应用程序内选择一种语言 选择语言后 我希望字符串使用特定语言 如果我更改手机语言 那么我的应用程序将以设置的语言运行 我无法找到任何在不更改手机语言的情况下设置语言的方法 此外 一旦设置了语言 更改就应该反映出来 有人可以建议一
  • Android:有没有办法以毫安为单位获取设备的电池容量?

    我想获取设备的电池容量来进行一些电池消耗计算 是否可以以某种方式获取它 例如 三星 Galaxy Note 2 的电池容量为 3100mAh 谢谢你的帮助 知道了 在 SDK 中无法直接找到任何内容 但可以使用反射来完成 这是工作代码 pu
  • android Accessibility-service 突然停止触发事件

    我有一个 AccessibilityService 工作正常 但由于开发过程中的某些原因它停止工作 我似乎找不到这个原因 请看一下我的代码并告诉我为什么它不起作用 public class MyServicee extends Access
  • 如何将图像从 Android 应用程序上传到网络服务器的特定文件夹中

    如何将图像从 android 移动到 Web 服务器上的指定文件夹 这是我的安卓代码 package com example bitmaptest import java io ByteArrayOutputStream import ja
  • 在 Android 中,如何将字符串从 Activity 传递到 Service?

    任何人都可以告诉如何将字符串或整数从活动传递到服务 我试图传递一个整数 setpossition 4 但它不需要 启动时总是需要 0 Service 我不知道为什么我不能通过使用 Service 实例从 Activity 进行操作 publ
  • 如何删除因 Google Fitness API 7.5.0 添加的权限

    将我的 play services fitness api 从 7 0 0 更新到 7 5 0 后 我注意到当我将新版本上传到 PlayStore 时 它 告诉我正在添加一个新权限和 2 个新功能 我没有这样做 有没有搞错 在做了一些研究来

随机推荐

  • Android - 使用 LocationManager 不会提供地理修复

    我正在尝试使用以下代码获取 G1 的 GPS 位置 活动中 MyLocationListener myListener new MyLocationListener LocationManager myManager LocationMan
  • 更改 app.config 后强制重新生成 Settings.settings 文件

    我有一个自动构建过程 可以将应用程序设置为指定模式 例如 Dev uat live 根据这种模式 我想将连接字符串更新为相关的连接字符串 但是 在我的数据访问层中有一个 app config 文件 它存储连接字符串 用于提供 Setting
  • 使用 JSOUP 将文档加载到 WebView

    我正在尝试将网页的一部分解析为 WebView 我正在使用 jsoup 库获取我需要的部分页面 然后加载到 webview 这是代码 public void loadArticleWithHTML Thread downloadThread
  • 随机创建两个列表

    我使用 pandas 从 CSV 文件导入大量数据 读取后我将其格式化为仅包含数字数据 然后返回列表中的列表 每个列表包含大约 140k 位数据 numericalData 从这个列表中 我希望创建Testing and Training
  • iPhone - 可以覆盖 UITableViewCell setSelected:animated

    我正在绘制自定义 UITableViewCells 我的单元格是不透明的 并且完全绘制在单元格的 drawRect 中 以帮助提高性能 我想自己处理选定单元格的外观 如果不这样做 那么我的单元格的内容将被添加的 selectedBackgr
  • 找不到 javax.servlet.jsp.jstl.core.Config 类

    我正在尝试将 Spring 与 Hibernate 一起使用 视图使用 JSTL 当我在浏览器中打开页面时 我看到错误 java lang ClassNotFoundException javax servlet jsp jstl core
  • 为什么我应该将 XPathContext 与 Perl 的 XML::LibXML 一起使用?

    该脚本可以在有或没有的情况下使用XPathContext 我为什么要使用它XPathContext usr bin env perl use warnings use strict use XML LibXML use 5 012 my p
  • 在登录屏幕中禁用stormpath的创建帐户选项

    我想在stormpath登录屏幕中禁用创建帐户 对 api 的调用应该已经由经过应用程序身份验证的用户进行 我尝试将stormpathEnableRegistration 设置为 false 但注册功能仍然启用 app use stormp
  • 如何调用一个哈希值的方法?

    之前 我询问过一种在给定条件下执行方法的巧妙方法 Ruby 是一种根据条件执行函数的巧妙方法 解决方案和响应时间都很棒 但在实施后 拥有 lambda 哈希值很快就会变得丑陋 所以我开始尝试 以下代码有效 def a puts hello
  • java - 谷歌番石榴缓存 invalidateAll() 和 cleanUp() 之间的区别

    说我有一个Cache定义如下 private static Cache
  • 如何计算 Java 中事件的经过时间? [复制]

    这个问题在这里已经有答案了 使用 Java 访问系统时钟的简单 容易的方法是什么 以便我可以计算事件的经过时间 我会避免使用System currentTimeMillis 用于测量经过的时间 currentTimeMillis 返回 挂钟
  • Grails Gorm:对象引用未保存的瞬态实例

    在 Grails 中保存 Trip 实例时出现以下异常 2011 01 26 22 37 42 801 http 8090 5 ERROR 错误 GrailsExceptionResolver 对象引用未保存的瞬态实例 保存 刷新前的瞬态实
  • 如果已连接,如何使用 javascript 刷新页面?

    我有一个网页 我希望它每 2 分钟刷新一次 使用以下代码 location reload 问题是我假设用户已连接 但如果他 她没有在线连接 页面将失败并给出默认浏览器 无连接错误页面 并且页面永远不会刷新 除非用户手动刷新 我可以包含一个
  • 一点点绘制曲线

    我需要绘制一条曲线 知道我每 x 毫秒或 x 秒收到点 并且每次收到新点时 曲线都会向左移动一个像素 我正在使用贝塞尔算法从收到的点绘制曲线 因此我至少需要三个点来开始 我想知道如何继续在图像上一点一点地绘制曲线 这就是我现在正在做的事情
  • 如何使用 InstallShield 升级代码 GUID 卸载 Inno Setup 中的相关产品

    我们公司已从使用InstallShield Express 切换为使用Inno Setup 5 5 2 版本 我们已经使用 InstallShield 进行了多年的旧安装 但始终依赖 InstallShield 的升级代码 GUID 来处理
  • FirebaseRecyclerAdapter 无法填充结果[重复]

    这个问题在这里已经有答案了 我想通过在 RecyclerView 中使用 FirebaseRecyclerAdapter 而不是使用 FirebaseListAdapter 来显示 EmployeeDetails 但该活动没有显示任何内容
  • 使用 sql 中的 Sum 函数进行透视

    我有以下格式的数据 Client Business Unit Year Quarter USD Amt BalckRock Pricing 2010 Q1 234 BalckRock Pricing 2010 Q2 343 BalckRoc
  • 如何为 AJAX 变量赋值添加回调

    我有一个变量responce通过 AJAX 函数分配send 当我做任务的时候 responce send 发送之前返回的响应确实给了我一个undefined如何添加回调来防止这种情况发生 编辑 澄清我的要求 它仍然返回未定义 我正在使用函
  • 当我使用 Sammy.js 时,如何移动到页面上的锚点? [复制]

    这个问题在这里已经有答案了 可能的重复 如何使用 jQuery 或 Javascript 将 HTML 页面滚动到给定的锚点 我正在使用 Sammy js 它处理所有客户端 URL 导航 我想导航到 page fragment 但该页面实际
  • Android 12:检测用户是否禁用/启用相机和麦克风

    借助新的 Android 12 操作系统 用户现在可以完全禁用所有应用程序中的麦克风和摄像头使用 这其实是一件好事 让用户轻松掌控隐私 如果应用程序启动并有权使用麦克风和摄像头 并且用户已禁用对这些硬件的所有访问权限 Android 12