У меня есть активность, чья функциональность заключается в том, чтобы делать скриншот текущего экрана. Вот как метод onCreate выглядит для этого действия:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(null)
mProjectionManager = getSystemService(Context.MEDIA_PROJECTION_SERVICE) as MediaProjectionManager
startActivityForResult(mProjectionManager.createScreenCaptureIntent(), REQUEST_CODE)
}
Тогда прямо под ним у меня есть метод onActivityResult, который выглядит следующим образом:
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) {
if (requestCode == REQUEST_CODE) {
sMediaProjection = mProjectionManager.getMediaProjection(resultCode, data)
val externalFilesDir = getExternalFilesDir(null)
if (externalFilesDir != null) {
STORE_DIRECTORY = externalFilesDir.absolutePath + "/screenshots/"
val storeDirectory = File(STORE_DIRECTORY)
if (!storeDirectory.exists()) {
val success = storeDirectory.mkdirs()
if (!success) {
Log.e("TAGE", "failed to create file storage directory.")
return
}
}
} else {
Log.e("TAG", "failed to create file storage directory, getExternalFilesDir is null.")
return
}
// display metrics
val metrics = resources.displayMetrics
mDensity = metrics.densityDpi
mDisplay = windowManager.defaultDisplay
// create virtual display depending on device width / height
createVirtualDisplay()
// register orientation change callback
mOrientationChangeCallback = OrientationChangeCallback(this)
if (mOrientationChangeCallback.canDetectOrientation()) {
mOrientationChangeCallback.enable()
}
// register media projection stop callback
sMediaProjection.registerCallback(MediaProjectionStopCallback(), mHandler)
}
}
Вот как выглядит упражнение в Манифесте:
<activity android:name=".ScreenshotActivity"
android:theme="@android:style/Theme.NoDisplay"
android:excludeFromRecents="true"
android:screenOrientation="portrait">
</activity>
Моя проблема в том, что функция onActivityResult никогда не вызывается, я пытался добавить точки останова в эту функцию, но они никогда не были достигнуты.