Код: Выделить всё
MediaProjectionService
Код: Выделить всё
java.lang.SecurityException: Don't re-use the resultData to retrieve the same projection instance, and don't use a token that has timed out. Don't take multiple captures by invoking MediaProjection#createVirtualDisplay multiple times on the same instance.
[*] Я использую службу переднего плана.
Я также добавил все необходимые разрешения в Androidmanifest :
Вот ключевая часть внутри моего mainactivity.kt , эта функция называется каждый раз, когда нажата кнопка Capture :
Код: Выделить всё
public fun requestScreenCapturePermission() {
// First check if we already have valid MediaProjection
if (mediaProjection != null) {
Log.d(TAG, "Using existing MediaProjection")
captureScreen()
return
}
// If not, request new permission
Log.d(TAG, "Requesting new screen capture permission")
val intent = mediaProjectionManager?.createScreenCaptureIntent()
if (intent != null) {
startActivityForResult(intent, SCREEN_CAPTURE_REQUEST_CODE)
} else {
Log.e(TAG, "Failed to create screen capture intent")
showError("Failed to create screen capture intent")
}
}
< /code>
И вот как это называется: < /p>
buttonView?.findViewById(R.id.captureButton)?.apply {
setOnClickListener {
CoroutineScope(Dispatchers.Main).launch {
(context as? MainActivity)?.requestScreenCapturePermission()
}
}
}
2025-04-11 17:15:26.159 17698-17698 MainActivity com.my.domain.appname D Requesting new screen capture permission
2025-04-11 17:15:30.847 17698-17698 MainActivity com.my.domain.appname D Screen capture permission granted, resultCode: -1
2025-04-11 17:15:30.852 17698-17698 MainActivity com.my.domain.appname D Starting capture service with resultCode: -1
2025-04-11 17:15:30.876 17698-17698 MediaProjectionService com.my.domain.appname D MediaProjection initialized: true
2025-04-11 17:15:30.881 17698-17698 MediaProjectionService com.my.domain.appname D Successfully got MediaProjection
< /code>
Что я спрашиваю: < /h3>
Кто -нибудь еще столкнулся с этой проблемой на Android 14? /> Существует ли лучший способ управлять разрешением среды проекции, который будет надежно работать во всех версиях Android? Способ проверить, есть ли разрешение уже предоставлено, и не запрашивать его снова? /> Компилирование SDK: 35 < /code> < /li>
У меня есть услуга переднего плана. < /li>
Android 11 работает отлично. Я с радостью предоставлю дополнительный контекст или информацию, если это необходимо.
Подробнее здесь: https://stackoverflow.com/questions/795 ... edly-despi