我正在使用 Media Projection API 截取屏幕截图的应用程序。我能够成功获取用户前台屏幕的屏幕截图,但遗憾的是无法获取用户是否已提供屏幕捕获权限的状态。
要求:当用户未提供屏幕截图权限时,我只需要显示一次权限窗口。
当前行为:每次启动应用程序时显示权限窗口。请找到下面的屏幕截图
我用来在 MainActivity 中显示权限窗口的代码:
MediaProjectionManager mgr = (MediaProjectionManager) getSystemService(MEDIA_PROJECTION_SERVICE);
startActivityForResult(mgr.createScreenCaptureIntent(),
Constants.RESULT_CODE.SCREENSHOT);
Run Code Online (Sandbox Code Playgroud)
如果用户从权限窗口中选择“是”,我将启动一个服务,如下所示:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == Constants.RESULT_CODE.SCREENSHOT) {
if (resultCode == RESULT_OK) {
Intent intent = new Intent(this, WindowChangeDetectingService.class);
intent.putExtra(Constants.INTENT_KEY.SCREENSHOT, resultCode);
intent.putExtra(Constants.INTENT_KEY.SCREENSHOT_DATA, data);
startService(intent);
finish();
}
}
}
Run Code Online (Sandbox Code Playgroud)
预期输出:
我正在找出检查简单权限检查的解决方案,该检查在请求媒体投影服务权限窗口之前使用任何布尔检查来判断权限是否已提供,例如
if(isMediaPermissionAlreadyEnabled){
MediaProjectionManager mgr = (MediaProjectionManager) getSystemService(MEDIA_PROJECTION_SERVICE);
startActivityForResult(mgr.createScreenCaptureIntent(),
Constants.RESULT_CODE.SCREENSHOT);
}
Run Code Online (Sandbox Code Playgroud)
自 3 天以来,我一直在努力寻找权限检查的解决方案,但我无法找到任何解决方法来解决我的用例。如果有人为我提供一些建议或提示来解决我的问题,那将非常有帮助。提前致谢。
permissions service android android-mediaprojection mediaprojectionmanager
众所周知,我们可以使用Android MediaProjection API在Activity中捕获屏幕,但我想在Service的线程中捕获屏幕。但 Android Service 没有 MediaProjection 需要执行某些操作的 onActivityResult() 方法。看来我们只能像下面这样调用 MediaProjection API:
startActivityForResult(mProjectionManager.createScreenCaptureIntent(), REQUEST_CODE);
Run Code Online (Sandbox Code Playgroud)
有没有办法在 Android 服务中使用 MediaProjection?
service android capture android-mediaprojection mediaprojectionmanager