我正在使用 Media Projection API 截屏的应用程序中工作。我能够成功获取用户前台屏幕的屏幕截图,但不幸的是无法获取用户是否已提供屏幕捕获权限的状态。
要求:当用户没有提供截屏权限时,我只需要显示一次权限窗口。
当前行为:每次启动应用程序时都会显示权限窗口。请在下面找到屏幕截图
我用来在 MainActivity 中显示权限窗口的代码:
MediaProjectionManager mgr = (MediaProjectionManager) getSystemService(MEDIA_PROJECTION_SERVICE);
startActivityForResult(mgr.createScreenCaptureIntent(),
Constants.RESULT_CODE.SCREENSHOT);
如果用户从权限窗口中选择“是”,我将启动如下服务:
@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();
}
}
}
预期输出:
我正在找出检查简单权限检查的解决方案,该检查告诉在请求媒体投影服务权限窗口之前是否已经提供了任何布尔检查权限,例如
if(isMediaPermissionAlreadyEnabled){
MediaProjectionManager mgr = (MediaProjectionManager) getSystemService(MEDIA_PROJECTION_SERVICE);
startActivityForResult(mgr.createScreenCaptureIntent(),
Constants.RESULT_CODE.SCREENSHOT);
}
自 3 天以来,我一直在努力获得权限检查的解决方案,但我找不到任何解决方法来解决我的用例。如果有人向我提供一些建议或技巧来解决我的问题,那将非常有帮助。提前致谢。