package ru.net.jimm; import android.text.ClipboardManager; import java.util.concurrent.atomic.AtomicReference; /** * Created with IntelliJ IDEA. * <p/> * Date: 03.04.13 15:10 * * @author vladimir */ public class Clipboard { private JimmActivity activity; private final Object lock = new Object(); public Clipboard() { } void setActivity(JimmActivity activity) { this.activity = activity; } public String get() { final AtomicReference<String> text = new AtomicReference<String>(); text.set(null); activity.runOnUiThread(new Runnable() { public void run() { try { ClipboardManager clipboard = (ClipboardManager) activity.getSystemService(activity.CLIPBOARD_SERVICE); text.set(clipboard.hasText() ? clipboard.getText().toString() : null); synchronized (lock) { lock.notify(); } } catch (Throwable e) { jimm.modules.DebugLog.panic("get clipboard", e); // do nothing } } }); if (!activity.isActivityThread()) try { synchronized (lock) { lock.wait(); } //Thread.sleep(100); } catch (Exception ignored) { } return text.get(); } public void put(final String text) { activity.runOnUiThread(new Runnable() { public void run() { try { ClipboardManager clipboard = (ClipboardManager) activity.getSystemService(activity.CLIPBOARD_SERVICE); clipboard.setText(text); } catch (Throwable e) { jimm.modules.DebugLog.panic("set clipboard", e); // do nothing } } }); } }