Android: fix QtDisplayManager getDisplaySize function
This patch fixed QtDisplayManager::getDisplaySize function to use API's that do not require MANAGE_APP_TOKENS permission. The function previously failed on 32-bit architectures with Android 11 aka SDK 30 aka VERSION R due to createWindowContext requiring MANAGE_APP_TOKENS permission. The earlier try-catch lead to next error, because of invalid values. Amends: 98120622ff1f6f87664f4c42e830000a21391751 Fixes: QTBUG-137027 Pick-to: 6.10 6.9 6.8 6.5 Change-Id: Ia9c3a64ea41ad0575a34a96858851a1123cfc915 Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
This commit is contained in:
parent
cee8ea7c13
commit
1141a6fa17
@ -18,6 +18,7 @@ import android.view.View;
|
||||
import android.view.WindowInsets;
|
||||
import android.view.WindowManager;
|
||||
import android.view.WindowManager.LayoutParams;
|
||||
import android.view.WindowMetrics;
|
||||
import android.view.WindowInsetsController;
|
||||
import android.view.Window;
|
||||
|
||||
@ -284,16 +285,18 @@ class QtDisplayManager
|
||||
} else {
|
||||
try {
|
||||
Context displayContext = context.createDisplayContext(display);
|
||||
Context windowsContext = displayContext.createWindowContext(
|
||||
WindowManager.LayoutParams.TYPE_APPLICATION, null);
|
||||
WindowManager windowManager = (WindowManager) windowsContext.getSystemService(
|
||||
Context.WINDOW_SERVICE);
|
||||
Rect bounds = windowManager.getMaximumWindowMetrics().getBounds();
|
||||
return new Size(bounds.width(), bounds.height());
|
||||
} catch (SecurityException e) {
|
||||
WindowManager windowManager = displayContext.getSystemService(WindowManager.class);
|
||||
if (windowManager != null) {
|
||||
WindowMetrics metrics = windowManager.getCurrentWindowMetrics();
|
||||
Rect areaBounds = metrics.getBounds();
|
||||
return new Size(areaBounds.width(), areaBounds.height());
|
||||
} else {
|
||||
Log.e(QtTAG, "getDisplaySize(): WindowManager null, display ID" + display.getDisplayId());
|
||||
}
|
||||
} catch (Exception e) {
|
||||
Log.e(QtTAG, "Failed to retrieve display metrics with " + e);
|
||||
return new Size(0, 0);
|
||||
}
|
||||
return new Size(0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user