2

由于 MIUI 11/12 使用其自己的暗模式自定义实现,使用以下代码会导致 ClassCastException 和 Activity 生命周期异常,因为 DefaultNightMode 和 LocalNightMode 始终未指定,即 -100 而不是 0 或 1。

如果有人专门为 MIUI 11/12 构建了小米设备的解决方法。请帮帮我。

使用的代码:

AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
this.recreate();

错误原因:

2020-10-25 07:04:43.626 9167-9167/com.xxxx.xxxxxx E/ActivityInjector: get life cycle exception
    java.lang.ClassCastException: android.os.BinderProxy cannot be cast to android.app.servertransaction.ClientTransaction
4

2 回答 2

2

我自己解决了。折腾了一个星期后,我做到了。

方法如下:

-- 而不是为每个 Activity 设置 android:forceDarkAllowed="false"。

-- 只需转到 values.xml 并将其放入您的 AppTheme

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

它会要求您创建一个 valuesv29.xml。创建它,然后从所有活动中删除 forceDarkAllowed="false"。

欢迎。:)

于 2020-10-31T10:56:24.683 回答
1

同样在 jetpack compose 中,只需将行添加到 theme.xml

<item name="android:forceDarkAllowed" tools:targetApi="q">false</item>

有了这个目标 api 对我来说效果很好

于 2021-07-14T03:06:46.887 回答