@@ -4,8 +4,13 @@ import android.app.SearchManager
44import android.content.Context
55import android.net.Uri
66import android.os.Bundle
7+ import android.print.PrintAttributes
8+ import android.print.PrintManager
79import android.view.Menu
810import android.view.MenuItem
11+ import android.webkit.WebResourceRequest
12+ import android.webkit.WebView
13+ import android.webkit.WebViewClient
914import androidx.appcompat.widget.SearchView
1015import androidx.core.view.MenuItemCompat
1116import com.simplemobiletools.commons.extensions.*
@@ -50,14 +55,15 @@ class ReadTextActivity : SimpleActivity() {
5055 when (item.itemId) {
5156 R .id.menu_save -> saveText()
5257 R .id.menu_open_with -> openPath(intent.dataString, true )
58+ R .id.menu_print -> printText()
5359 else -> return super .onOptionsItemSelected(item)
5460 }
5561 return true
5662 }
5763
5864 private fun setupSearch (menu : Menu ) {
5965 val searchManager = getSystemService(Context .SEARCH_SERVICE ) as SearchManager
60- searchMenuItem = menu.findItem(R .id.search )
66+ searchMenuItem = menu.findItem(R .id.menu_search )
6167 (searchMenuItem!! .actionView as SearchView ).apply {
6268 setSearchableInfo(searchManager.getSearchableInfo(componentName))
6369 isSubmitButtonEnabled = false
@@ -110,6 +116,32 @@ class ReadTextActivity : SimpleActivity() {
110116 }
111117 }
112118
119+ private fun printText () {
120+ try {
121+ val webView = WebView (this )
122+ webView.webViewClient = object : WebViewClient () {
123+ override fun shouldOverrideUrlLoading (view : WebView , request : WebResourceRequest ) = false
124+
125+ override fun onPageFinished (view : WebView , url : String ) {
126+ createWebPrintJob(view)
127+ }
128+ }
129+
130+ webView.loadData(read_text_view.text.toString(), " text/plain" , " UTF-8" )
131+ } catch (e: Exception ) {
132+ showErrorToast(e)
133+ }
134+ }
135+
136+ private fun createWebPrintJob (webView : WebView ) {
137+ val jobName = if (filePath.isNotEmpty()) filePath.getFilenameFromPath() else getString(R .string.app_name)
138+ val printAdapter = webView.createPrintDocumentAdapter(jobName)
139+
140+ (getSystemService(Context .PRINT_SERVICE ) as ? PrintManager )?.apply {
141+ print (jobName, printAdapter, PrintAttributes .Builder ().build())
142+ }
143+ }
144+
113145 private fun checkIntent () {
114146 read_text_view.setTextColor(config.textColor)
115147 val uri = if (intent.extras?.containsKey(REAL_FILE_PATH ) == true ) {
0 commit comments