我的应用活动少,碎片化。其中一个活动是广播播放器。用户可以使用一个媒体通知(和一个服务)来控制播放器。它工作得很好。但后来我在无线电活动中添加了一个带有webview的片段(网站 "chatovod")。当我打开这个片段(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
}
}
服务代码是很大的,所以如果你需要,我可以加载它。所以如果你需要它,我可以把它加载到其他地方。
对不起,我的英语水平不高,但我希望你能理解我想回答的问题。
这个问题在我的应用程序中发生了不止一个地方。
在我的应用程序中,它是音频焦点使其。
编码。
systemService.abandonAudioFocus(new AudioManager.OnAudioFocusChangeListener() {
@Override
public void onAudioFocusChange(int focusChange) {
}
});
或其他覆盖方法与它。
在它做一些事情。
希望对你有帮助的人。