当前位置: 首页 > 面试题库 >

Android:在Jelly Bean的WebView中以编程方式触发文本选择模式

颜新
2023-03-14
问题内容

我需要以编程方式在WebView中触发文本选择模式,但是我使用的代码在Jelly Bean上不起作用?

我一直在使用以下代码,但是它不再在Android 4.1(Jelly Bean)上运行,因为Jelly
Bean不再支持WebView.selectText,emulateShiftHeld和键调度。

以下适用于ICS最高版本的代码基于:如何在androidwebview中启用默认的高亮菜单?

public void selectAndCopyText() {
    try {
        // ICS
            WebView.class.getMethod("selectText").invoke(this);
        } catch (Exception e1) {
        try {
            Method m = WebView.class.getMethod("emulateShiftHeld", (Class[])null);
            m.invoke(this, (Object[])null);
        } catch (Exception e2) {
            // fallback
            KeyEvent shiftPressEvent = new KeyEvent(0,0,
                     KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_SHIFT_LEFT,0,0);
            shiftPressEvent.dispatch(this);
        }
    }
}

如何实现可在Jelly Bean上使用的类似功能?


问题答案:

我在这里的评论中列出了一个潜在的解决方案:如何在androidwebview中启用默认的高亮菜单?

这是潜在解决方案的内容:经过分析,android.webkit.WebViewClassic我在以下方面取得了一些成功:

KeyEvent enterEvent = new KeyEvent(0,0,KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_ENTER,0,0);
enterEvent.dispatch(this);

我认为可能需要更多,因为WebView在使用模拟器时需要向下滚动一点,然后才能在上面运行,但是在实际的JellyBean设备上测试后,上面的效果似乎很好。



 类似资料:
  • 问题内容: 我有一个隐藏的文件输入元素。是否可以通过按钮的单击事件来触发其 选择文件 对话框? 问题答案: 如果您希望使用自己的按钮来上传文件而不是使用,则可以执行以下操作: 请注意,我使用而不是。您不能在未显示的文件输入上调用click事件。

  • 问题内容: 如何以编程方式选择UITextField中的所有文本? 问题答案: 原来,调用-selectAll:使用非零发送者显示菜单。用nil调用它会使它选择文本,但不显示菜单。 在我的bug报告从Apple回来后,我建议我通过nil而不是self来尝试。 无需考虑UIMenuController或其他选择API。

  • 问题内容: 如果我去这里 然后单击“启动演示模态”,即可完成预期的操作。我将模式用作注册过程的一部分,并且涉及服务器端验证。如果有问题,我想将用户重定向到显示我的验证消息的相同模式。目前,除了用户的物理点击之外,我无法弄清楚如何显示模式。如何以编程方式启动模型? 问题答案: 为了手动显示模式弹出窗口,您必须执行此操作 以前,您需要使用对其进行初始化,以便在您手动执行之前不会显示它。 模态容器的ID

  • 问题内容: 如何以编程方式在HTML 字段中选择特定范围的文本?(我不想选择 整个 字段,而只是选择一个子集) 另外,如何确定字段中当前选择的范围? 问题答案: 以下是选择文本框的一部分(范围选择)并获取所选文本的方法:

  • 问题内容: 在JavaScript中,可以通过编程方式选择或元素中的文本。您可以使用来集中输入,然后使用来选择其内容。您甚至可以使用选择特定范围。 我的问题是:在元素中也有任何方法可以这样做吗? 我发现我可以这样做,可以将插入符号放入元素中,但是随后运行不起作用(也不行)。我在网上找不到任何有关它的信息,但也许我在寻找错误的信息… 顺便说一下,如果有什么不同,我只需要它在Google Chrome

  • 问题内容: 启动应用程序时,未选择任何行。但我想表明第一行已被选中。 这该怎么做?我是否需要设置行的颜色? 更新:我尝试了table.setRowSelectionInterval(0,0)。我知道它应该可以工作,但是有一条错误消息: 问题答案: 您可以调用setRowSelectionInterval来做到这一点: 选择第一行。