mirror of
https://github.com/apache/cordova-android.git
synced 2026-04-23 00:00:09 +08:00
feat: add AndroidEdgeToEdge preference & theme flag (#1779)
This commit is contained in:
+23
-2
@@ -271,7 +271,7 @@ function cleanWww (projectRoot, locations) {
|
||||
*/
|
||||
function updateProjectAccordingTo (platformConfig, locations) {
|
||||
updateProjectStrings(platformConfig, locations);
|
||||
updateProjectSplashScreen(platformConfig, locations);
|
||||
updateProjectTheme(platformConfig, locations);
|
||||
|
||||
const name = platformConfig.name();
|
||||
|
||||
@@ -376,11 +376,31 @@ function warnForDeprecatedSplashScreen (cordovaProject) {
|
||||
* be used to update project
|
||||
* @param {Object} locations A map of locations for this platform
|
||||
*/
|
||||
function updateProjectSplashScreen (platformConfig, locations) {
|
||||
function updateProjectTheme (platformConfig, locations) {
|
||||
// res/values/themes.xml
|
||||
const themes = xmlHelpers.parseElementtreeSync(locations.themes);
|
||||
const splashScreenTheme = themes.find('style[@name="Theme.App.SplashScreen"]');
|
||||
|
||||
// Update edge-to-edge settings in app theme.
|
||||
let hasE2E = false; // default case
|
||||
|
||||
const preferenceE2E = platformConfig.getPreference('AndroidEdgeToEdge', this.platform);
|
||||
if (!preferenceE2E) {
|
||||
events.emit('verbose', 'The preference name "AndroidEdgeToEdge" was not set. Defaulting to "false".');
|
||||
} else {
|
||||
const hasInvalidPreferenceE2E = preferenceE2E !== 'true' && preferenceE2E !== 'false';
|
||||
if (hasInvalidPreferenceE2E) {
|
||||
events.emit('verbose', 'Preference name "AndroidEdgeToEdge" has an invalid value. Valid values are "true" or "false". Defaulting to "false"');
|
||||
}
|
||||
hasE2E = hasInvalidPreferenceE2E ? false : preferenceE2E === 'true';
|
||||
}
|
||||
|
||||
const optOutE2EKey = 'android:windowOptOutEdgeToEdgeEnforcement';
|
||||
const optOutE2EItem = splashScreenTheme.find(`item[@name="${optOutE2EKey}"]`);
|
||||
const optOutE2EValue = !hasE2E ? 'true' : 'false';
|
||||
optOutE2EItem.text = optOutE2EValue;
|
||||
events.emit('verbose', `Updating theme item "${optOutE2EKey}" with value "${optOutE2EValue}"`);
|
||||
|
||||
let splashBg = platformConfig.getPreference('AndroidWindowSplashScreenBackground', this.platform);
|
||||
if (!splashBg) {
|
||||
splashBg = platformConfig.getPreference('SplashScreenBackgroundColor', this.platform);
|
||||
@@ -397,6 +417,7 @@ function updateProjectSplashScreen (platformConfig, locations) {
|
||||
splashBgNode.text = '@color/cdv_splashscreen_background';
|
||||
|
||||
[
|
||||
// Splash Screen
|
||||
'windowSplashScreenAnimatedIcon',
|
||||
'windowSplashScreenAnimationDuration',
|
||||
'android:windowSplashScreenBrandingImage',
|
||||
|
||||
Reference in New Issue
Block a user