gogisha,
我有一個類似的想法。該活動將是一個文本字符串列表,用於注入ime正在處理的文檔。這是我做到的。在IME
<activity
android:name="org.this_voice.prakeyboard.KeyboardMacros"
android:configChanges="keyboardHidden|orientation|screenSize"
android:excludeFromRecents="true"
android:label="@string/keyboardmacros"
android:screenOrientation="portrait" >
</activity>
於是,我拿起轉義字符的代碼便可開始活動:
在清單中,我添加了一個活動
} else if (primaryCode == 27) {
Intent i = new Intent(this, KeyboardMacros.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.putExtra("MODE","okay");
startActivity(i);
但是有一個問題與ime開始onCreate活動。也許是一個Android錯誤/功能。所以我把這個活動的onCreate:
Intent origin = this.getIntent();
String okay = origin.getStringExtra("MODE");
if ((okay == null) || (!okay.matches("okay"))){ finish(); }
所以,活性只有當我打的軟鍵發送27(ESC)開始。活動啓動後,會出現列表,用戶選擇文本,它到剪貼板活動負荷的項目,並且:
String macro = dbs.get(result);
ClipboardManager clipboard = (ClipboardManager)
getSystemService(Context.CLIPBOARD_SERVICE);
clipboard.setText(macro);
finish();
於是我們又陷入與我們的輸入法編輯器。所以在ime.startInput中我們有:
ClipboardManager clipboard = (ClipboardManager)
getSystemService(Context.CLIPBOARD_SERVICE);
if (clipboard.hasText()){
getCurrentInputConnection().commitText(clipboard.getText(), 1);
clipboard.setText("");
清除剪貼板很重要。我正在使用setText,以便我們與Android 8+兼容。它改變了11更有趣的東西。哦, 而在輸入法的onCreate,我們清除剪貼板,以及:
ClipboardManager clipboard = (ClipboardManager)
getSystemService(Context.CLIPBOARD_SERVICE);
clipboard.setText("");
希望這有助於。其實,我希望你從一年前問你的問題就已經知道了...... 最好的魚。