Ich schreibe einen Accessibility-Dienst in Android, die auf die Ansicht der aktuell ausgewählten Ansicht abrufen, aber auf einigen Geräten (Nexus 6P 6.0.1, Samsung Galaxy S6 Rand + 5 + 6.0.1) Ich bekomme keine Sicht-ID durch und auf anderen (HTC One M8 5.0.1) kommt es gut durch. Da es auf einigen Geräten funktioniert, bin ich mir sicher, dass es keinen Problem mit meinem Code gibt, jedoch habe ich unten einen minimalen Testfall veröffentlicht.AccessibilityService nicht zurück Sicht IDs
Kann mir jemand helfen, meine Serviceberichte über alle Geräte zu erhalten?
Der A11y Service
public class ViewIdLoggingAccessibilityService extends AccessibilityService {
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
AccessibilityNodeInfo source = event.getSource();
if (source == null) {
Log.d("onAccessibilityEvent", "source was null for: " + event);
} else {
String viewIdResourceName = source.getViewIdResourceName();
Log.d("onAccessibilityEvent", "viewid: " + viewIdResourceName);
}
}
@Override
public void onInterrupt() {
Log.d("!# onInterrupt", "called");
}
}
Die AndroidManifest.xml
<manifest package="com.example.a11yservice"
xmlns:android="http://schemas.android.com/apk/res/android"
>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme"
>
<service
android:name=".ViewIdLoggingAccessibilityService"
android:label="@string/view_id_logging_service_label"
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/serviceconfig"
/>
</service>
</application>
</manifest>
serviceconfig.xml
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
android:accessibilityEventTypes="typeViewClicked|typeViewFocused"
android:accessibilityFeedbackType="feedbackGeneric"
android:accessibilityFlags="flagReportViewIds"
android:canRetrieveWindowContent="true"
android:notificationTimeout="100" />
perfekte Antwort! –
Gibt es eine Möglichkeit, den Namen ** Aktivität ** von der Ereignisquelle zu erhalten? Ich möchte einen Empfänger zu dieser Aktivität senden, Ist es möglich? lass es mich wissen, bitte –