截图权限获取——Auto.js 图像识别与找图能力的前提
为什么需要单独获取
Android 5.0 之后普通应用不能直接截图,必须通过 MediaProjection API 向系统申请一次性授权。Auto.js 把这套流程封装成了 requestScreenCapture() 函数。
获取流程
在脚本首次调用图像相关 API 之前,先执行:
// 申请截图权限,返回 Promise
requestScreenCapture(false); // false = 横屏截图,true = 竖屏截图
执行后系统会弹出一个确认框「是否允许 Auto.js 录制屏幕?」,点「允许」即可。系统会记录授权,下次运行同应用的脚本时不会再弹窗。
权限有效期
- 单次授权在 Auto.js 运行期间一直有效
- 重启 Auto.js 后需要重新授权(除非打包成 APK 后在设置里永久授予)
- 横竖屏切换可能需要重新申请
实战示例
// 等无障碍就绪
auto.waitFor();
// 申请截图
if (!requestScreenCapture(false)) {
toast("截图权限获取失败");
exit();
}
// 截图并保存
var img = captureScreen();
files.write("/sdcard/Download/screenshot.png", images.toBytes(img));
toast("截图已保存");
常见问题
requestScreenCapture 没有弹窗
检查是否已经打包成 APK 并在设置里永久授予了截图权限。如果是 Auto.js 主应用内运行,应该每次都弹窗。如果还是没反应,尝试重启 Auto.js 应用。
截图黑屏
某些游戏和 DRM 保护的视频播放器禁止截图,这是系统级限制,无法绕过。普通 APP 界面截图正常。
截图模糊 / 尺寸不对
确保 requestScreenCapture 参数与你实际使用的方向一致(竖屏手机传 true)。部分高分辨率屏幕截图后尺寸会自动缩放,这是 Auto.js 的性能优化。