如何以编程方式从android webview中选择文本

时间:2016-01-24 17:32:05

标签: android android-webview

我有一个用于显示我的大学教学大纲的应用程序,我在一个带有webview的活动中显示了一堆作为资产存储的html文件。该应用程序仅支持API 14+ html文件是纯文本文件。 我现在要做的是提供一个共享按钮,该按钮可以复制webview中的所有文本,并提供通过shareintent与复制的文本作为正文共享它的选项。 我可以在webview中手动执行此操作,方法是长按文本并使用全选按钮并将其复制然后粘贴到我想要的任何位置。这非常有效。 我只想通过点击按钮

来复制这个动作

这是我尝试过的代码:

android.text.ClipboardManager clipboard = (android.text.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
KeyEvent shiftPressEvent = new KeyEvent(0, 0,
        KeyEvent.ACTION_DOWN,
        KeyEvent.KEYCODE_SHIFT_LEFT, 0, 0);
shiftPressEvent.dispatch(webView);

if(clipboard!=null) {
    String text = clipboard.getText().toString();
    Toast.makeText(SyllabusPage_alternative.this, "select_text_now     " + text, Toast.LENGTH_LONG).show();

    Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
    sharingIntent.setType("text/plain");
    String shareBody = text;
    sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody);
    startActivity(Intent.createChooser(sharingIntent, "Share via"));
}

但是这似乎并没有正常工作,当我按下按钮时,只有剪贴板的先前内容显示在toast和shareIntent的正文中。 我只是想知道如何做到这一点,选择整个文本,然后以编程方式将其复制到一个字符串?或者请告诉我任何其他方式我可以接受这个

提前感谢所有回复

Image to show an example of the html file I'm displaying in my webview

1 个答案:

答案 0 :(得分:0)

您可以使用JavaScriptInterface从WebView运行Java代码(在Android组件中)。

您将创建一个JavaScript按钮,将该信息返回到Activity / Fragment / Blabla中的函数。

以下显示的代码取自Boris answer

在您的webView中设置一个新的JavaScriptInterface:

JavaScriptInterface jsInterface = new JavaScriptInterface(this);
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(jsInterface, "JSInterface");

使用方法创建一个类(可选创建新类)。

public class JavaScriptInterface {
    private Activity activity;

    public JavaScriptInterface(Activity activiy) {
        this.activity = activiy;
    }

    public void shareStuff(String someStuff){
        Intent sendIntent = new Intent();
        sendIntent.setAction(Intent.ACTION_SEND);
        sendIntent.putExtra(Intent.EXTRA_TEXT, someStuff);
        sendIntent.setType("text/plain");
        startActivity(sendIntent);
    }
}

然后在您的课程提纲HTML:

<button onclick="window.JSInterface.shareStuff('your_selected_text');" >
</button>

查看这些链接了解更多信息。

Call Java function from JavaScript over Android WebView

How to get return value from javascript in webview of android?

主要文档中的一些示例。

http://developer.android.com/guide/webapps/webview.html