Android 15 新增加了多项隐私保护功能。本文我们将讨论其中之一:屏幕录制检测
介绍
Android 15 增加了应用检测它是否被屏幕录制的支持。每当应用在屏幕录制中处于可见或不可见状态之间转换时,系统都会调用 WindowManager
的回调。如果应用正在执行敏感操作,可以通知用户他们正在被录屏。
录屏检测
- 在 AndroidManifest.xml 文件中添加权限
<uses-permission android:name="android.permission.DETECT_SCREEN_RECORDING" />
- 屏幕录制检测代码示例
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
ComposeSampleTheme {
Surface(
modifier = Modifier.fillMaxSize(),
color = MaterialTheme.colorScheme.background,
) {
Greeting("Hello https://itmob.cn")
}
}
}
}
// 定义录屏检测的回调
private val screenRecordingCallback = Consumer<Int> { state ->
if (state == SCREEN_RECORDING_STATE_VISIBLE) {
// 正在被录屏
Toast.makeText(this, "Being recorded", Toast.LENGTH_LONG).show()
} else {
// 没有被录屏
Toast.makeText(this, "Not being recorded", Toast.LENGTH_LONG).show()
}
}
override fun onStart() {
super.onStart()
// 通过 WindowManager 添加屏幕检测的回调
if (Build.VERSION.SDK_INT >= 35) {
windowManager.addScreenRecordingCallback(mainExecutor, screenRecordingCallback)
}
}
override fun onStop() {
super.onStop()
// 应用不可见时,移除屏幕检测的回调
if (Build.VERSION.SDK_INT >= 35) {
windowManager.removeScreenRecordingCallback(screenRecordingCallback)
}
}
}
其他:
Android 15 (API 级别 35) 起 WindowManager 的新增方法:addScreenRecordingCallback
翻译:2024 年 9 月 3 日 Android 15 已发布至 AOSP
Android 15 新功能和 API 详解:Private Space/私密空间功能简介
Android 15 新功能和 API 详解:应用程序启动信息,ApplicationStartInfo
Android 15 新功能和 API 详解:支持 16 KB 页面大小
Android 15 新功能和 API 详解:更精确的 Intent 解析,UriRelativeFilterGroup 和 UriRelativeFilter