重现问题的步骤:
使用应用内WebView启动应用程序。
致电webview.loadUrl(“http://n-g.nxtomo.hk/CYvsCP/app.html?nocache=true”);
点击网页一次,然后开始播放背景音乐。
按HOME按钮,应用程序将转到后台,但音乐会继续播放。
当活动转到后台时,预计WebView会暂停。
我试过打电话:
webview.onResume();
webview.onPause();
或
Class.forName("android.webkit.WebView").getMethod("onResume", (Class[]) null).invoke(webview, (Object[]) null);
Class.forName("android.webkit.WebView").getMethod("onPause", (Class[]) null).invoke(webview, (Object[]) null);
或
wv.resumeTimers();
wv.pauseTimers();
对于Android 4.4.2和5.0,两种方式都不起作用(意味着没有效果并且在后台继续播放声音),我只有两个设备。
我发现一个建议是删除MediaPlayer的回调,强制停止声音播放。
@Override
protected void onPause() {
super.onPause();
((AudioManager) getSystemService(
Context.AUDIO_SERVICE)).requestAudioFocus(
null,
AudioManager.STREAM_MUSIC,
AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);
}
这是停止声音的工作。 但!当我恢复应用程序时,声音将不会自动播放。所以,我正在寻找一种正式的方法来解决这个问题。 :(
参阅
[问题532359:在后台应用程序时,无法在Android应用内WebView上暂停HTML5声音。 - 2015年9月16日] https://code.google.com/p/chromium/issues/detail?id=532359
[问题10282:WebView.onPause和WebView.onResume的公共API - 2010年8月7日] https://code.google.com/p/android/issues/detail?id=10282
答案 0 :(得分:0)
我有完全相同的问题,正在寻找官方修复。 我找到的唯一解决方法是
使用loadURL( “”);
但它远非一个好的解决方案。一旦您重新加载页面重新加载,如果您需要使webview会话保持活动或持久,这可能会导致很多问题。
答案 1 :(得分:0)
Google的回复: https://code.google.com/p/chromium/issues/detail?id=532359#c5
嗯,如果你只是想改变Android应用程序,那么你可能已经不在了 祝你在那里能做什么。如果您可以更改页面,则可以查看页面可见性API 暂停/恢复播放(Tim可能知道它是否已启用WebView或 不是)。
但最终,由于它是WebView,您的应用可以与之通信 页面并使其在应用程序的活动中播放/暂停播放 的onPause /的onResume。