Удаляется media notification при запуске WebView
В приложении есть три активити под каждую задачу. У каждой активити несколько фрагментов. Одна из активити отвечает за радиоплеер. Плеером можно управлять как из фрагметов приложения, так и через media notification в "шторке". За всё это отвечает сервис. И всё работает как положено - при закрытии приложения, при ползании в приложении по другим фрагментам\активити.
За одним исключением - фрамент webview в котором я открываю сайт chatovod. При этом радио продолжает играть без проблем, то есть сервис работает, исчезает именно notification. При этом другие notification этого же приложения (например от активити с картинками) никуда не деваются.
Пробовал создавать для webview отдельную активити. ПРобовал открывать не chatovod а гугл - всё равно просто удаляет media notfication и всё. При этом, когда на радио начинается новый трек, то notification появляется (у меня реализован в сервисе функционал его перерисовки при смене трека) и никуда не девается. И если после этого выйти с webview, а потом вернуться, то оно не исчезает. Но если полазать, попереключать станции, то после нескольких переключений, повторный заход в webview снова удаляет media notification =)
Ниже код webview, код сервиса очень большой, если надо могу скинуть куда-нибудь в другое место.
class ChatovodFragment: Fragment() {
private lateinit var webView: WebView
companion object {
fun newInstance(url: String): ChatovodFragment {
val fragment = ChatovodFragment()
val bundle = Bundle()
bundle.putString(BUNDLE_CHATOVOD_URL, url)
fragment.arguments = bundle
return fragment
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
activity?.onBackPressedDispatcher?.addCallback(this, object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
if (webView.canGoBack()) {
webView.goBack()
} else {
activity?.supportFragmentManager?.popBackStack()
}
}
})
}
@SuppressLint("SetJavaScriptEnabled")
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val view = inflater.inflate(R.layout.fragment_chatovod, container, false)
val url: String =
if (arguments != null) {
requireArguments().getString(BUNDLE_CHATOVOD_URL, "")
} else
""
webView = view.findViewById(R.id.webView)
webView.settings.javaScriptEnabled = true
webView.loadUrl(url)
webView.webViewClient = MyWebViewClient()
return view
}
class MyWebViewClient: WebViewClient() {
override fun shouldOverrideUrlLoading(
view: WebView?,
request: WebResourceRequest?
): Boolean {
view?.loadUrl(request?.url.toString())
return true
}
}