2016-01-24 109 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

相關問題