Ich implementiere das Einfügen von Zwischenablage-Text in die EditText-Ansicht einer anderen Anwendung, wenn die Aktivitätsänderung mithilfe des Zugänglichkeitsdiensts erkannt wird.event.source() gibt null in android zurück
In meinem Accessibility Service funktioniert die Barrierefreiheitserkennung gut. Wenn onAccessibilityEvent jedoch aufgerufen wird, gibt der Code event.getSource() das Objekt null zurück.
public class ClipBoardPasteService extends AccessibilityService {
ClipboardManager clipboard;
@Override
public void onCreate() {
super.onCreate();
Log.i("MyTag", "clipboard service created");
}
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
Log.i("MyTag", "ClipBoardPastedService : onAccessibilityEvent");
clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
AccessibilityNodeInfo source = event.getSource();
Log.i("MyTag", "source name : " + source.getViewIdResourceName());
source.performAction(AccessibilityNodeInfo.ACTION_PASTE);
}
@Override
protected void onServiceConnected() {
super.onServiceConnected();
Log.i("MyTag", "ClipBoardPastedService : onServiceConnected");
String[] packages = {"com.google.android.talk"};
AccessibilityServiceInfo info = new AccessibilityServiceInfo();
info.flags = AccessibilityServiceInfo.DEFAULT;
info.packageNames = packages;
//AccessibilityEvent.TYPE_VIEW_TEXT_SELECTION_CHANGED
info.eventTypes = AccessibilityEvent.TYPE_VIEW_TEXT_SELECTION_CHANGED;
info.eventTypes = AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED;
info.feedbackType = AccessibilityServiceInfo.FEEDBACK_GENERIC;
setServiceInfo(info);
}
}
und dies ist ein Teil meines AndroidManifest.xml
<service
android:name=".ClipBoardPasteService"
android:enabled="true"
android:label="@string/app_name"
android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE" >
<intent-filter>
<action android:name="android.accessibilityservice.AccessibilityService" />
<category android:name="android.accessibilityservice.category.FEEDBACK_SPOKEN" />
</intent-filter>
<!-- from ICS -->
<meta-data
android:name="android.accessibilityservice"
android:resource="@xml/accessibility_service_config" />
</service>
dies accessibility_service_config.xml
<?xml version="1.0" encoding="utf-8"?>
<accessibility-service
xmlns:android="http://schemas.android.com/apk/res/android"
android:description="@string/service_description"
android:packageNames="@null"
android:accessibilityEventTypes="typeAllMask"
android:accessibilityFlags="flagDefault"
android:accessibilityFeedbackType="feedbackSpoken"
android:notificationTimeout="100"
android:canRetrieveWindowContent="true"
android:settingsActivity="com.example.android.accessibility.ServiceSettingsActivity"
/>
Ich suchte und andere Stackoverflow des ähnlichen Fragen gefunden, aber die Antwort „Meta fehlt -Daten in Manifest "ergibt keinen Sinn. Was ist falsch an meinem Code?