Android Code Snippet Disabling system darkmode in your app

I added this code to the code below to my apps manifest to disable forced dark mode by the system in my app. I thought it might be useful for someone, especially on Android phones like Xiaomi that forces your app to use dark mode irrespective of the theme in the manifest. There is an option to turn off forced dark mode per app in Xiaomi, the problem is that users don't even know they can, so your app will look bad if not optimized for dar mode. By adding this to the manifest, it will prevent the system from enforcing dark mode in your app (till you optimize your app for it anyway, which is actually the better choice.

B4X:
<item name="android:forceDarkAllowed">false</item>

The theme manifest looks like this:
B4X:
SetApplicationAttribute(android:theme, "@style/Custom")
CreateResource(values-v20, theme.xml,
<resources>
  <style
  name="Custom" parent="@android:style/Theme.Material.Light.NoActionBar">
     <item name="android:windowTranslucentNavigation">false</item>
     <item name="android:windowTranslucentStatus">true</item>
     <item name="android:forceDarkAllowed">false</item>
  </style>
</resources>
)
 

fbritop

Active Member
Licensed User
Longtime User

Thanks @Marvel , it will not load with an error:

B4X:
java.lang.RuntimeException: Unable to start activity ComponentInfo{cl.abreme.android/cl.abreme.android.main}: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.

Do you have a small working project to have a look at?

I also used this post, with no luck either:
https://www.b4x.com/android/forum/threads/disabling-system-darkmode-in-your-app.127411/#content
 

mcqueccu

Well-Known Member
Licensed User
Longtime User
Just use ONLY this in your manifest, it should work.

B4X:
SetApplicationAttribute(android:theme, "@style/Custom")
CreateResource(values-v20, theme.xml,
<resources>
  <style name="Custom" parent="@android:style/Theme.Material.Light.NoActionBar">
     <item name="android:windowTranslucentNavigation">false</item>
     <item name="android:windowTranslucentStatus">true</item>
     <item name="android:forceDarkAllowed">false</item>
  </style>
</resources>
)
 
Cookies are required to use this site. You must accept them to continue using the site. Learn more…