gpt4 book ai didi

用户按下后,Android WebView 没有停止

转载 作者:IT老高 更新时间:2023-10-28 21:53:26 25 4
gpt4 key购买 nike

我正在 WebView 中播放 YouTube 视频。我可以播放,但是当人离开屏幕时,我无法停止播放音频。

我在 onDestroy 和 onPause 中尝试了各种方法,或者将它们完全取出,但它们似乎没有任何作用。

有谁知道为什么即使在应用程序关闭并且用户打开其他应用程序后音频仍然播放并且不会停止?

这是我的全类代码:

import com.flurry.android.FlurryAgent;

import utils.SendEmail;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.view.KeyEvent;
import android.view.View;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.webkit.WebSettings.PluginState;
import android.widget.Button;

public class YoutubeActivity extends Activity
{
WebView webview = null;

@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
webview = new WebView(this);

setContentView(webview);

webview.getSettings().setAppCacheEnabled(false);
webview.getSettings().setJavaScriptEnabled(true);
webview.setInitialScale(1);
webview.getSettings().setPluginState(PluginState.ON);

WebSettings webSettings = webview.getSettings();

webSettings.setLoadsImagesAutomatically(true);
webSettings.setLoadWithOverviewMode(true);
webSettings.setBuiltInZoomControls(true);
webSettings.setUseWideViewPort(true);

webview.setWebViewClient(new WebViewClient() {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return false;
}
});


webview.setWebChromeClient(new WebChromeClient(){});

webSettings.setDomStorageEnabled(true);
webSettings.setAppCacheEnabled(true);
webSettings.setAppCachePath(getApplicationContext().getFilesDir().getAbsolutePath() + "/cache");

webSettings.setDatabaseEnabled(true);
webSettings.setDatabasePath(getApplicationContext().getFilesDir().getAbsolutePath() + "/databases");

SharedPreferences prefs =
PreferenceManager.getDefaultSharedPreferences( YoutubeActivity.this);
String url_to_watch = prefs.getString( "url_to_watch" , null );


webview.loadUrl(url_to_watch);
}



@Override
public void onPause()
{
super.onPause();

try
{
if ( webview != null )
{
webview.clearCache(true);
webview.getSettings().setAppCacheEnabled(false);
webview.stopLoading();
webview.destroy();
sendEmail ("in pause " , "");
webview = new WebView(this);
}

this.finish();
}
catch ( Exception e )
{

}
}


@Override
public void onDestroy()
{
super.onDestroy();

try
{
if ( webview != null )
{
webview = new WebView(this); // To try to reset the webview - didn't work.
}
}
catch ( Exception e )
{

}
}

@Override
public void onStop()
{
super.onStop();

FlurryAgent.onEndSession(this);

try
{
if ( webview != null )
{
webview.clearView();
webview.getSettings().setAppCacheEnabled(false);
webview.stopLoading();
webview.destroy();

sendEmail ("in stop " , "");
}
}
catch ( Exception e )
{

}

this.finish();
}

@Override
protected void onResume()
{
super.onResume();

try
{
webview.onResume();
}
catch ( Exception e )
{

}
}

@Override
protected void onRestart()
{
super.onRestart();
}


@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack())
{
webview.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}

// Subject , body
public void sendEmail( String subject , String body )
{
String[] params = new String[] { "http://www.problemio.com/problems/send_email_mobile.php", subject, body };

SendEmail task = new SendEmail();
task.execute(params);
}


//@Override
public void onPageFinished(WebView view, String url)
{
//super.onPageFinished(view, url);
view.clearCache(true);
}

public void onBackPressed ( )
{
final AlertDialog.Builder linkedin_builder = new AlertDialog.Builder(this);

linkedin_builder.setMessage("" +
"Go back to the home screen?")
.setCancelable(false)
.setNegativeButton("YES", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id)
{
if ( webview != null )
{
webview.destroy();
}

Intent myIntent = new Intent(YoutubeActivity.this, MainActivity.class);
YoutubeActivity.this.startActivity(myIntent);
}
})
.setPositiveButton("NO", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id)
{
dialog.cancel();
}
})
;
AlertDialog alert = linkedin_builder.create();
alert.show();
}


@Override
protected void onStart()
{
super.onStart();
FlurryAgent.onStartSession(this, "4VYNFK3V6RCZ53CZ3J32");
}
}

对于什么可能会阻止音频播放以及可能导致它的原因有什么想法吗?谢谢!

最佳答案

试试这个,希望对你有帮助:

@Override
public void onPause() {
myWebView.onPause();
myWebView.pauseTimers();//this may cause adMob to stop working
super.onPause();
}

@Override
public void onResume() {
super.onResume();
myWebView.resumeTimers();
myWebView.onResume();
}


@Override
protected void onDestroy() {
myWebView.destroy();
myWebView = null;
super.onDestroy();
}

关于用户按下后,Android WebView 没有停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19252948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com