From 00fa873dcc8abca462cb947de35fb05933212dd9 Mon Sep 17 00:00:00 2001 From: Varun Barad Date: Tue, 22 Oct 2019 12:36:50 +0530 Subject: [PATCH 1/2] Add methods to implement native copy-to-clipboard functionality. --- .../dev_android/util/AndroidWebViewBridge.kt | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/to/dev/dev_android/util/AndroidWebViewBridge.kt b/app/src/main/java/to/dev/dev_android/util/AndroidWebViewBridge.kt index a5f45c8..e4f2067 100644 --- a/app/src/main/java/to/dev/dev_android/util/AndroidWebViewBridge.kt +++ b/app/src/main/java/to/dev/dev_android/util/AndroidWebViewBridge.kt @@ -1,13 +1,18 @@ package to.dev.dev_android.util +import android.content.ClipData +import android.content.ClipboardManager +import android.content.Context import android.util.Log import android.webkit.JavascriptInterface +import android.widget.Toast +import to.dev.dev_android.BuildConfig /** * This class currently is empty because more methods would be added to it * when new bridge functionalities are added. */ -class AndroidWebViewBridge { +class AndroidWebViewBridge(private val context: Context) { /** * Every method that has to be accessed from web-view needs to be marked with * `@JavascriptInterface`. @@ -17,4 +22,16 @@ class AndroidWebViewBridge { fun logError(errorTag: String, errorMessage: String) { Log.e(errorTag, errorMessage) } + + @JavascriptInterface + fun copyToClipboard(copyText: String) { + val clipboard = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager + val clipData = ClipData.newPlainText("DEV Community", copyText) + clipboard.primaryClip = clipData + } + + @JavascriptInterface + fun showToast(message: String) { + Toast.makeText(context, message, Toast.LENGTH_LONG).show() + } } From 7d8722aeb5a62029dd9f7183a979ee5bdb2b737a Mon Sep 17 00:00:00 2001 From: Varun Barad Date: Tue, 22 Oct 2019 14:20:44 +0530 Subject: [PATCH 2/2] Supply context to AndroidWebViewBridge. --- .../main/java/to/dev/dev_android/view/main/view/MainActivity.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/to/dev/dev_android/view/main/view/MainActivity.kt b/app/src/main/java/to/dev/dev_android/view/main/view/MainActivity.kt index 53dd76a..c43ecf7 100644 --- a/app/src/main/java/to/dev/dev_android/view/main/view/MainActivity.kt +++ b/app/src/main/java/to/dev/dev_android/view/main/view/MainActivity.kt @@ -14,7 +14,7 @@ import to.dev.dev_android.databinding.ActivityMainBinding import to.dev.dev_android.util.AndroidWebViewBridge class MainActivity : BaseActivity(), CustomWebChromeClient.CustomListener { - private val webViewBridge: AndroidWebViewBridge = AndroidWebViewBridge() + private val webViewBridge: AndroidWebViewBridge = AndroidWebViewBridge(this) private var mFilePathCallback: ValueCallback>? = null