solo per aggiungere alla risposta di Kirill e ipotizzando l'applicazione ha permesso di Accessibilità,
Creare una classe che estende AccessibilityService e sovrascrivere onAccessibilityEvent metodo.
public class SampleAccessibilityService extends AccessibilityService {
@Override
public void onAccessibilityEvent(AccessibilityEvent accessibilityEvent) {
AccessibilityNodeInfo source = accessibilityEvent.getSource();
if (source != null) {
AccessibilityNodeInfo rowNode = getRootInActiveWindow();
if (rowNode != null) {
for (int i = 0; i < rowNode.getChildCount(); i++) {
AccessibilityNodeInfo accessibilityNodeInfo = rowNode.getChild(i);
if (accessibilityNodeInfo.isEditable() && accessibilityNodeInfo.isFocused()) {
accessibilityNodeInfo.performAction(AccessibilityNodeInfoCompat.ACTION_PASTE);
return;
}
}
}
}
}
@Override
public void onInterrupt() {
}
}
accessibilityNodeInfo.performAction(AccessibilityNodeInfoCompat.ACTION_PASTE)
si incolla il testo che viene copiato negli appunti.
Assicurarsi inoltre di avere una corretta configurazione di accessibilità.
config.xml
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
android:accessibilityFlags="flagDefault"
android:accessibilityEventTypes="typeViewClicked|typeViewFocused"
android:accessibilityFeedbackType="feedbackGeneric"
android:notificationTimeout="0"
android:canRetrieveWindowContent="true"
android:description="@string/testing" />
Qui android:accessibilityEventTypes="typeViewClicked|typeViewFocused"
filtrerà gli eventi per vedere clicca o vista messa a fuoco.
È possibile anche gli eventi in base ai pacchetti utilizzando "android:packageNames"
(in modo che il servizio non verrà chiamato spesso)
Infine dichiarare il servizio nel manifesto,
<service android:name=".SampleAccessibilityService"
android:label="@string/app_name"
android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">
<intent-filter>
<action android:name="android.accessibilityservice.AccessibilityService"/>
</intent-filter>
<meta-data
android:name="android.accessibilityservice"
android:resource="@xml/config" />
</service>
Penso che sia una risposta molto completa e quindi la contrassegnerò come Risposta. Sembra fare esattamente ciò di cui abbiamo bisogno, anche se non posso testarlo al momento a causa di altre priorità. Inoltre abbiamo trovato [BluePiano: Bluetooth Keyboard-Wedge per Android di TEC-IT] [http://www.tec-it.com/en/software/android/bluepiano/keyboard-wedge/Default.aspx] che farà per adesso. –