`

android使用webview时按后退退出的问题

阅读更多

使用webview打包html5游戏,代码都好了,具体如下

 

public class MainActivity extends ActionBarActivity {

    @Override
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
         WebView webView=new WebView(this);
        webView.getSettings().setJavaScriptEnabled(true);//支持js
webView.loadUrl("http://www.gg4493.com/");
        webView.setWebViewClient(new MyWebViewClient());


    }


    @Override
public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();

        //noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}

 

一切貌似很完美,玩游戏,被电脑打败了,点击“更多游戏”去查看其他游戏,然后点返回键,问题来了,不是挖掘技术哪家强,是webview没有后退功能,没法退回首页,而是直接退出,android开发问题还真多啊,还好哥机灵,找资料呗!

终于找到问题了,

只需要重写activity的onKeyDown方法,在onKeyDown里后退即可

public boolean onKeyDown(int keyCode ,KeyEvent keyEvent){
if(keyCode==keyEvent.KEYCODE_BACK){//监听返回键,如果可以后退就后退
if(webView.canGoBack()){
webView.goBack();
return true;
}
}
return super.onKeyDown(keyCode, keyEvent);

}

 

全部代码贴出,免得以后忘记

import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.Menu;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;


public class MainActivity extends Activity {
private WebView webView;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
init();
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}


private void init() {
webView = new WebView(this);
 webView.loadUrl("http://www.mm4493.cn/");
 WebSettings settings = webView.getSettings();
 settings.setJavaScriptEnabled(true);
 webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
  view.loadUrl(url);
return true;
}

});
setContentView(webView);

public boolean onKeyDown(int keyCode ,KeyEvent keyEvent){
if(keyCode==keyEvent.KEYCODE_BACK){
if(webView.canGoBack()){
webView.goBack();
return true;
}
}
return super.onKeyDown(keyCode, keyEvent);

}
}

分享到:
评论

相关推荐

    android的webview代码

    当用户点击后退按钮时,如果WebView还有历史记录,应先处理WebView的回退,而不是直接退出应用: ```java @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (event.getAction() == ...

    webview网页后退

    在Android开发中,WebView是一个非常重要的组件,它允许我们在应用程序中内嵌网页内容,实现与网页的交互。...通过以上方法,我们可以解决“webview后退不退出”的问题,实现用户友好且功能完善的WebView应用。

    Android-----WebView使用

    4. **处理Back按键**:默认情况下,按下系统Back键会导致整个应用退出。为防止这种情况,应在Activity中重写`onKeyDown()`方法,检查WebView是否可以后退,如果可以,则调用`goBack()`方法。 5. **JavaScript与Java...

    Android中WebView无法后退和js注入漏洞的解决方案

    总的来说,处理WebView的后退问题和JavaScript注入漏洞需要对Android和Web开发有深入理解。对于后退问题,可以通过调整重定向逻辑或自定义历史栈来解决;而对于安全问题,及时更新WebView组件,启用安全设置,并与...

    基于WebView的安卓android浏览器,基本功能齐全

    - **WebView版本**:不同Android版本的WebView可能存在差异,注意测试兼容性,必要时可以使用Crosswalk等库来提供稳定的WebView环境。 - **API级别适配**:针对低版本Android,可能需要使用反射或其他技术来调用新...

    Android WebView的详解及实例

    在使用WebView时,有几个关键点需要注意: 1. **网络权限**:为了能够加载网页内容,必须在`AndroidManifest.xml`文件中声明`INTERNET`权限。没有这个权限,WebView将无法访问网络资源,用户可能会看到“Web page ...

    这是一份全面&详细的Webview使用攻略

    Android WebView 使用攻略 Android 中的 WebView 是一个基于 webkit 引擎、展现 web 页面的控件,广泛应用于 Hybrid App 的开发中。下面是关于 WebView 的详细使用攻略。 1. 简介 WebView 是 Android 中的一个...

    webview-2:简单的 Android webview,用于分发 web 应用程序很有用

    网页浏览 apk描述带有 webview 的简单 Android 项目,它可以像 web 浏览器一样查看 apk 内的网页,后退键设置为不退出,链接在 webview 内打开新网页,这对于显示移动的 webapp 很有用。 在这个例子中,我使用 ...

    android开发网页教学版

    在Android开发中,创建...若不希望用户通过点击后退按钮退出App,可以在按下后退键时关闭它。 以上知识点构成了Android开发网页应用的基础,通过深入理解和实践,开发者可以创建出功能丰富的Web-based Android应用。

    Android WebView 应用界面开发教程

    - 重写`onBackPressed()`方法,以便在用户按下返回键时,如果WebView可以回退,则调用`goBack()`,否则调用`super.onBackPressed()`退出应用。 **三、WebView高级特性** 1. **WebSettings**:可以配置WebView的...

    Android开发之WebView组件的使用解析

    4. **处理返回键**:在浏览网页时,按下设备的返回键会退出WebView所在的Activity。如果希望按返回键时让WebView回退至上一页面,而不是关闭Activity,需要在Activity中监听`onKeyDown()`事件,如下: ```java ...

    WebView详解

    这样设置后,按下返回键将会使WebView回到上一个浏览的历史记录项,而不是退出Activity。 ##### 5. 获取手势焦点 如果WebView中需要用户手动输入文本,如用户名或密码,那么需要确保WebView可以获取到手势焦点: ...

    Android高级应用源码-ViewPager+Fragment侧滑选项卡,浏览器控件,两次退出.zip

    在Android开发中,高级应用通常涉及到更复杂的组件和交互设计,本项目"Android高级应用源码-ViewPager+Fragment侧滑选项卡,浏览器控件,两次退出.zip"就是一个很好的实例,展示了如何实现一些常见的功能和最佳实践...

    Android应用源码-浏览器.rar

    本项目名为“Android应用源码-浏览器”,提供了一个基础的浏览器框架,实现了核心的功能,如页面刷新、前进、后退、腾讯应用下载以及应用的退出。接下来,我们将深入探讨这些关键功能的实现原理及其在Android开发中...

    Android应用源码之ViewPager+Fragment侧滑选项卡,浏览器控件,两次退出.zip

    WebView允许在应用程序内加载和展示网页内容,支持JavaScript交互,甚至可以实现一些基本的网页操作,如前进、后退、刷新等。 6. **两次退出机制**: 应用程序设置“两次退出”功能是为了防止用户意外关闭应用。当...

    安卓开发-ViewPager+Fragment侧滑选项卡,浏览器控件,两次退出.zip

    在Android应用开发中,"安卓开发-ViewPager+Fragment侧滑选项卡,浏览器控件,两次退出.zip" 这个资源包主要涵盖了三个关键知识点:ViewPager、Fragment和侧滑选项卡的实现,内置浏览器控件的使用,以及双击退出的...

    安卓Android源码——ViewPager+Fragment侧滑选项卡,浏览器控件,两次退出.zip

    - 在处理 `WebView` 时,应考虑到性能优化,比如避免加载过多的资源,使用缓存策略等。 - 对于“两次退出”功能,可以结合安卓的 `SharedPreferences` 来存储用户是否已点击过一次返回,以保持状态。 总的来说,...

    自制简单浏览器

    5. **退出**:关闭WebView及父Activity通常使用finish()方法,确保程序正常退出。 ```java finish(); ``` **安全与优化** 1. **权限请求**:由于WebView可能加载外部网络资源,需要在AndroidManifest.xml中声明...

    androidFullscreenWebApp:此Android应用程序以全屏模式在WebView中呈现以编程方式定义的网站。 用于物联网项目或家庭和办公室自动化

    用户始终可以通过向上滑动或按下主屏幕按钮退出全屏模式。 您可以通过进入固定模式来防止这种情况发生(请参阅Android文档)。 后退按钮已被该应用禁用。 JavaScript介面 JavaScript界面​​使您可以从Web应用程序...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    Webview window in android used to load pages just works like browser, as well as there is only one webview running at the same time. (2)Cross-domain data interaction. Different webviews can not share...

Global site tag (gtag.js) - Google Analytics