Is this topic still active? I need help with media projection. I don't know where I'm going wrong, in the logs I get media projection permission missing!
class MediaProjectionPermissionActivity : Activity() {
companion object {
private const val REQUEST_MEDIA_PROJECTION = 1001
}
private lateinit var mediaProjectionManager: MediaProjectionManager
private var hasInitService = false
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
mediaProjectionManager = getSystemService(Context.MEDIA_PROJECTION_SERVICE) as MediaProjectionManager
// Pokreni zahtev za dozvolu
val permissionIntent = mediaProjectionManager.createScreenCaptureIntent()
startActivityForResult(permissionIntent, REQUEST_MEDIA_PROJECTION)
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
Log.d("MediaProjectionPermission", "ResultCode: $resultCode, Data: $data")
if (requestCode == REQUEST_MEDIA_PROJECTION) {
if (resultCode == Activity.RESULT_OK && data != null) {
Toast.makeText(this, "MediaProjection dozvoljen!", Toast.LENGTH_SHORT).show()
// Inicijalizuj servis samo ako već nije inicijalizovan
if (!hasInitService) {
initService(resultCode, data)
hasInitService = true
}
} else {
Toast.makeText(this, "MediaProjection odbijen!", Toast.LENGTH_SHORT).show()
}
}
finish() // Zatvori aktivnost nakon što je rezultat vraćen
}
private fun initService(resultCode: Int, data: Intent) {
val screenshotServiceIntent = Intent(this, ScreenshotService::class.java).apply {
putExtra("resultCode", resultCode)
putExtra("data", data)
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
// Ako je verzija Androida 12 (API 31) ili novija, koristimo foreground servis tip
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
screenshotServiceIntent.putExtra(
"foregroundServiceType",
1 // 1 je tip za "Media Projection"
)
}
startForegroundService(screenshotServiceIntent)
} else {
startService(screenshotServiceIntent)
}
}
}