首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

按back导航键时Android Webview应用程序强制关闭

当用户按下 Android 设备上的返回导航键时,Android WebView 应用程序可能会强制关闭。这是因为默认情况下,按下返回导航键会导致 WebView 返回上一个网页,而不是返回到应用程序的上一个活动。为了解决这个问题,开发人员可以通过重写 WebView 的 onBackPressed() 方法来控制返回导航键的行为。

以下是一个示例代码,展示了如何在 Android WebView 应用程序中处理返回导航键:

代码语言:txt
复制
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;

public class MainActivity extends Activity {
    private WebView webView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        webView = findViewById(R.id.webview);
        webView.setWebViewClient(new WebViewClient());
        webView.loadUrl("https://www.example.com");
    }

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

在上面的示例中,我们重写了 MainActivity 的 onKeyDown() 方法。当用户按下返回导航键时,我们首先检查 WebView 是否可以返回上一个网页(webView.canGoBack())。如果可以,我们调用 webView.goBack() 来返回上一个网页。否则,我们将返回到应用程序的上一个活动。

这样,当用户按下返回导航键时,Android WebView 应用程序将正确地处理返回操作,而不会强制关闭应用程序。

推荐的腾讯云相关产品:腾讯云移动浏览器网页开发服务(https://cloud.tencent.com/product/mws)

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 几款Android 应用自动化测试工具「建议收藏」

    常规类参数 1、 -help 作用:列出简单的用法 例:adb shell monkey -help 也可不写help 2、-v 作用:命令行上的每一个-v都将增加反馈信息的详细级别。 Level0(默认),除了启动、测试完成和最终结果外只提供较少的信息。 adb shell monkey -p com.shjt.map -v 100 Level1,提供了较为详细的测试信息,如逐个发送到 Activity 的事件信息。 adb shell monkey -p com.shjt.map -v -v 100 Level2,提供了更多的设置信息,如测试中选中或未选中的 Activity 信息。 adb shell monkey -p com.shjt.map -v -v -v 100 比较常用的是-v -v -v,即最多详细信息,一般会保存到指定文件中供开发人员查找bug原因时使用。 例:adb shell monkey -v 10 事件类参数 1、-s <seed> 作用:伪随机数生成器的seed值。如果用相同的seed值再次运行monkey,将生成相同的事件序列。 例:adb shell monkey -s 1483082208904 -v 10 2、–throttle <milliseconds> 作用:在事件之间插入固定的时间(毫秒)延迟,你可以使用这个设置来减缓Monkey的运行速度,如果你不指定这个参数,则事件之间将没有延迟,事件将以最快的速度生成。 注:常用参数,一般设置为300毫秒,原因是实际用户操作的最快300毫秒左右一个动作事件,所以此处一般设置为300毫秒。 例:adb shell monkey –throttle 300 -v 10 3、–pct-touch <percent> 作用:调整触摸事件的百分比。(触摸事件是指在屏幕中的一个down-up事件,即在屏幕某处按下并抬起的操作) 注:常用参数,此参数设置要适应当前被测应用程序的操作,比如一个应用80%的操作都是触摸,那就可以将此参数的百分比设置成相应较高的百分比。 例:adb shell monkey –pct-touch 100 -v 10 4、–pct-motion <percent> 作用:调整motion事件百分比。(motion事件是由屏幕上某处一个down事件、一系列伪随机的移动事件和一个up事件组成) 注:常用参数,需注意的是移动事件是直线滑动 例:adb shell monkey –pct-motion 100 -v 10 5、–pct-trackball<percent> 作用:调整滚动球事件百分比。(滚动球事件由一个或多个随机的移动事件组成,有时会伴随着点击事件) 注:不常使用参数,现在手机几乎没有滚动球,但滚动球事件中包含曲线滑动事件,在被测程序需要曲线滑动时可以选用此参数。 例:adb shell monkey –pct-trackball 100 -v 10 6、–pct-nav<percent> 作用:调整基本的导航事件百分比。(导航事件由方向输入设备的上下左右按键所触发的事件组成) 注:不常用操作。 例:adb shell monkey –pct-nav 100 -v 10 7、–pct-majornav<percent> 作用:调整主要导航事件的百分比。(这些导航事件通常会导致UI界面中的动作事件,如5-way键盘的中间键,回退按键、菜单按键) 注:不常用操作。 例:adb shell monkey –pct-majornav 100 -v 10 8、–pct-syskeys<percent> 作用:调整系统事件百分比。(这些按键通常由系统保留使用,如Home、Back、Start Call、EndCall、音量调节) 注:不常用。 例:adb shell monkey –pct-syskeys 100 -v 10 9、–pct-appswitch<percent> 作用:调整Activity启动的百分比。(在随机的时间间隔中,Monkey将执行一个startActivity()调用,作为最大程度覆盖被测包中全部Activity的一种方法) 注:不常用。 例:adb shell monkey –pct-appswitch 100 -v 5 10、–pct-anyevent 作用:调整其他事件的百分比。(这包含所有其他事件,如按键、其他在设备上不常用的按钮等) 注:不常用。 例:adb shell monkey –pct-anyevent 100 -v 5 约束类参数 1、-p<allowed-package-nam

    02

    Appium+python自动化(二十三)- 真假美猴王Monkeyrunner与Monkey傻傻的分不清楚

    看《西游记》第五十七回,说是“六耳猕猴”化作孙悟空的摸样,伤了唐僧,后又和孙悟空大打出手…… 这位假孙悟空,实力不用多说了吧,和真孙悟空一般无二,大战孙悟空,闹到上天入地下海。 在唐僧那:念紧箍咒,两个都喊疼,自然看不出哪个真假; 到天宫:拖塔天王拿照妖镜照,也看不出; 又到观音那:观音也看不出。最后到幽冥处阎罗那,经“谛听”听过之后,“谛听”却说:“我看出来了,却不敢说” 最后还是如来老佛爷道出六耳真身并用金钵盂罩住,才被孙悟空一棍子打死。想必各位小伙伴都看过这以精彩片段。不过据知情人士说真假美猴王存在阴谋,这里有黑幕:说是真的孙悟空被打死了,活下来的是假的。好了废话少说,还是回到今天的主题:真假美猴王Monkeyrunner与Monkey傻傻的分不清楚。

    04

    Android 2.0 --- 2.3 API变更概要:

    Android 2.0 API变更概要:  1、Bluetooth   · 开启关闭蓝牙   · 设备和服务发现   · 使用 RFCOMM连接一个可插拔的设备收发数据   · 公布RFCOMM 服务和监听接收 RFCOMM 连接  2、Sync adapters   · 新的APIs, 同步桥接器连接任何backend  3、Account Manager   · 集中的帐户管理器 API ,安全的储存和使用可信的tokens/passwords  4、Contacts   · 新的通信APIs 允许获取多个账户的数据.   · 新的快速通信framework APIs 允许开发者在他们的应用中创建通信标记, 一键点击标记打开一个新的窗口展示一个如何联系当前人的列表.  5、WebView   · 不赞成使用的类: UrlInterceptHandler, Plugin, PluginData, PluginList, UrlInterceptRegistry.  6、Camera   · 颜色模式, 场景模式 闪光模式, 焦点模式, 白平衡 旋转和其他设置的新的特征.   · 当缩放级别改变的时候,会回调新的缩放回调接口.  7、Media   · MediaScanner现在为所有图片生成缩微图when they are inserted into MediaStore.   · 新的缩微图 API : 检索需要的图片和视频的缩微图.  8、Other Framework   · android.R.style 中新的系统主题,能够更加简单的显示当前acitivities的系统壁纸或者保持之前的activity在后台.新的壁纸管理器API 取代并且增加了wallpaper APIs ,我们可以允许我们的应用要求设置系统壁纸.   · 新的Service APIs帮助应用准确的处理Service 生命周期 ,在指定的低内存状态下service将会被关闭.   o Service.setForeground() 不推荐使用,并且现在这个方法并没有实际执行. .他被一个新的API所取代, startForeground(), that helps (and requires) associating an ongoing notification with the foreground state.   · MotionEvent 如果设备允许的话,MotionEvent 会返回多点触摸信息.最多可同时获取3点   · KeyEvent 现在有了新的按键发送 APIs,去帮助实现 action-on-up 和长按键行为, 一个新的机制取消按键 (虚拟按键).   · WindowManager.LayoutParams 现在有了新的常量允许窗口能够在被锁或者其他的状况中唤醒屏幕,这个允许程序能够让例如闹钟等的应用实现唤醒设备.     ·New Intent APIs 广播设备的对接状态,当这个设备放在桌面或者停车场,允许程序启动特殊的activity.  9、Key events executed on key-up   Android 2.0能够使用虚拟按键HOME, MENU, BACK和SEARCH,而非物理按键,为了让用户在他们的设备中获得最好的用户体验,android平台现在把这些按键执行加入到了key-up,做了 key-down/key-up 配对,而非只有key-down.,这有助于防止意外按钮事件,并让使用者按下按钮区域,然后拖动而不生成一个事件出来。   这种改变只会影响你的应用程序一点,如果它是拦截按钮事件,最好用key-down,而不是key-up.。特例,如果您的应用程序拦截BACK 键,你应该确保你的应用妥善处理按键事件。 Android 2.0.1 API变更概要:   · 新的快速联系人标记风格(quickContactBadgeStyle)* 属性,让应用的QuickContactBadge 组件接收必要的风格.   · 当在manifest里面宣布了filter,取消了支持 ACTION_CONFIGURATION_CHANGED 广播 ,如果想要去接收这个广播, 这个应用必须注册 registerReceiver(BroadcastReceiver, IntentFilter).   性能上的改变:     1、Bluetooth   改变了 ACTION_REQUEST_ENABLE 和ACTION_REQUEST_DISCOVERABLE的返回值   · ACTION_REQUEST_ENABLE 如果蓝牙是成功开启的,现

    04
    领券