1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- // SPDX-License-Identifier: Unlicense OR MIT
- package org.gioui;
- import android.content.ClipboardManager;
- import android.content.ClipData;
- import android.content.Context;
- import android.os.Handler;
- import android.os.Looper;
- import java.io.UnsupportedEncodingException;
- public final class Gio {
- private static final Object initLock = new Object();
- private static boolean jniLoaded;
- private static final Handler handler = new Handler(Looper.getMainLooper());
- /**
- * init loads and initializes the Go native library and runs
- * the Go main function.
- *
- * It is exported for use by Android apps that need to run Go code
- * outside the lifecycle of the Gio activity.
- */
- public static synchronized void init(Context appCtx) {
- synchronized (initLock) {
- if (jniLoaded) {
- return;
- }
- String dataDir = appCtx.getFilesDir().getAbsolutePath();
- byte[] dataDirUTF8;
- try {
- dataDirUTF8 = dataDir.getBytes("UTF-8");
- } catch (UnsupportedEncodingException e) {
- throw new RuntimeException(e);
- }
- System.loadLibrary("gio");
- runGoMain(dataDirUTF8, appCtx);
- jniLoaded = true;
- }
- }
- static private native void runGoMain(byte[] dataDir, Context context);
- static void writeClipboard(Context ctx, String s) {
- ClipboardManager m = (ClipboardManager)ctx.getSystemService(Context.CLIPBOARD_SERVICE);
- m.setPrimaryClip(ClipData.newPlainText(null, s));
- }
- static String readClipboard(Context ctx) {
- ClipboardManager m = (ClipboardManager)ctx.getSystemService(Context.CLIPBOARD_SERVICE);
- ClipData c = m.getPrimaryClip();
- if (c == null || c.getItemCount() < 1) {
- return null;
- }
- return c.getItemAt(0).coerceToText(ctx).toString();
- }
- static void wakeupMainThread() {
- handler.post(new Runnable() {
- @Override public void run() {
- scheduleMainFuncs();
- }
- });
- }
- static private native void scheduleMainFuncs();
- }
|