Android Изменить статусБарЦвет доверенной веб-активности
Я создаю на основе этого репозитория свое первое приложение TWA / PWA. Все работает нормально, но я не могу изменить цвет строки состояния.
Я изменяю этот файл и добавляю эту строку в <style>
тег:
<item name="android:statusBarColor">@color/ic_launcher_background</item>
Дело в том, что... он хорошо работает при первом запуске приложения... Но через 500 мс после первого запуска он запускает веб-просмотр и statusBarColor снова становится белым.
Любая идея, как я могу это исправить?
2 ответа
Вы должны добавить новые метаданные в свой AndroidManifest, где вы объявили Trusted Web Activity (android.support.customtabs.trusted.STATUS_BAR_COLOR)
<activity android:name="android.support.customtabs.trusted.LauncherActivity">
<meta-data
android:name="android.support.customtabs.trusted.DEFAULT_URL"
android:value="https://your-host.com/" />
<meta-data
android:name="android.support.customtabs.trusted.STATUS_BAR_COLOR"
android:resource="@color/colorPrimaryDark" />
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE"/>
<data
android:scheme="https"
android:host="your-host.com"/>
</intent-filter>
</activity>
Обновлено: последняя версия библиотеки поддержки ( e849e45c90) была обновлена, чтобы упростить изменение цвета строки состояния.
Образец SVGOMG был обновлен, чтобы использовать его, и необходимые изменения для приложений, чтобы заставить его работать, можно увидеть в этом запросе извлечения.
Секция ниже устарела, но оставлена здесь для исторического контекста
Можно изменить цвет строки состояния, настроив его при открытии намерения пользовательских вкладок.
В настоящее время это не настраивается в манифесте, и основной способ сделать это:
- Скопируйте LauncherActivity из репозитория библиотеки поддержки в ваш проект.
- измените ссылку в AndroidManifest.xml на вашу копию реализации.
- Настройте код LauncherActivity для настройки строки состояния, заменив метод getCustomTabsIntent чем-то вроде приведенного ниже кода:
protected CustomTabsIntent getCustomTabsIntent(CustomTabsSession session) {
return new CustomTabsIntent.Builder(session)
.setToolbarColor(Color.parseColor("#FF0000"))
.build();
}
Код выше создаст красную строку состояния. замещать #FF0000
с желанием цвета.
Попробуйте добавить этот код на onResume()
public void setStatusBarColor(int color) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
getWindow().setStatusBarColor(color);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
}