2016-01-24 58 views
2

我有一个应用程序用于显示我的大学教学大纲,其中显示了一堆以webview形式存储为资源的html文件。该应用程序仅支持API 14+ html文件是纯文本文件。 我现在要做的是提供一个共享按钮,它将复制webview中的所有文本,并提供选项,通过共享内容与复制文本共享。 我可以通过长按文本并使用选择所有按钮并复制它然后粘贴到任意位置来在web视图中手动执行此操作。这工作完美。 我只是想复制一个按钮如何以编程方式从android 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")); 
} 

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

感谢您对所有的答复提前

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

+0

为什么你需要将文本从网页视图复制时,你可以只从HTML入资产复制呢? –

+0

只是一个快速的无应答评论。我认为你的布局设计很干净,很好。如果您想要查找带有alpha(透明背景)的图标,可以在https://design.google.com/icons/查询Google的主要来源。您甚至可以在运行时设置它们的颜色(色调)。 –

+0

谢谢,我会尝试图标的链接。 – user3908652

回答

0

您可以从网页视图与JavaScriptInterface运行Java代码(在你的Android组件) 。

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

下面显示的代码取自Boris answer

设置新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

+0

我不明白最后一点。 'your_selected_text'是什么意思。我必须手动放置文字吗?我为我的大学提供了不同课程和科目的超过500个html文件,因此我无法为每个文件都执行此操作,也无法操作所有这些文件来添加或删除某些内容。我试着把onclick =“window.JSInterface.shareStuff('your_selected_text');”在我的晶圆厂按钮,它并没有工作在晶圆厂按钮点击 – user3908652

+0

最后一部分将**内**您的HTML文件,即添加一个JavaScript onClick函数的按钮。然后使用JavaScript检索选定的文本相当容易,请查看以下链接以获得更多信息:http://stackoverflow.com/questions/5379120/get-the-highlighted-selected-text –

+0

非常感谢您的回答。但我无法再次编辑所有500+的HTML文件。所以我用了一种不同的方法来解决我的问题。我将整个页面转换为图片,然后让它共享。但无论如何感谢您的回答 – user3908652

相关问题