event.getSource() returns null android 中的辅助功能
event.getSource() returns null Accessibility in android
我尝试使用无障碍服务(如 DashLane)或其他一些使用无障碍服务的应用来填充 EditText 字段。
我正在使用聚焦事件视图。当 EditText 获得焦点时,事件开始但 getSource()
return 为空。
代码:
AccessibilityNodeInfo source = event.getSource();
if (source != null) {
ClipboardManager clipboard = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
ClipData clip = ClipData.newPlainText("label", "TEST DATA");
clipboard.setPrimaryClip(clip);
source.performAction(AccessibilityNodeInfo.ACTION_PASTE);
Toast.makeText(MyAccessibilityService.this, "Pasted Successfully", Toast.LENGTH_LONG);
}
... 我已经尝试了其他一些出错的方法。所以这里的一个问题是为什么 return null?
Android 清单
<uses-permission android:name="android.permission.BIND_ACCESSIBILITY_SERVICE"/>
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">
<service android:name=".MyAccessibilityService" android:label="@string/app_name" android:enabled="true" android:exported="true">
<intent-filter>
<action android:name="android.accessibilityservice.AccessibilityService" android:resource="@xml/accessibility" />
</intent-filter>
Accessibility.xml
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
android:description="@string/accessibility_service_description"
android:packageNames="com.test.toasts2"
android:accessibilityEventTypes="typeAllMask"
android:accessibilityFlags="flagDefault"
android:accessibilityFeedbackType="feedbackSpoken"
android:notificationTimeout="100"
android:canRetrieveWindowContent="true"
android:settingsActivity="com.example.android.accessibility.ServiceSettingsActivity"
/>
您错过了清单文件中的元标记。只需添加。
<meta-data android:name="android.accessibilityservice"
android:resource="@xml/accessibility">
确保android:canRetrieveWindowContent="true"
这对我有用。而这个属性不能通过java代码设置。
我尝试使用无障碍服务(如 DashLane)或其他一些使用无障碍服务的应用来填充 EditText 字段。
我正在使用聚焦事件视图。当 EditText 获得焦点时,事件开始但 getSource()
return 为空。
代码:
AccessibilityNodeInfo source = event.getSource();
if (source != null) {
ClipboardManager clipboard = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
ClipData clip = ClipData.newPlainText("label", "TEST DATA");
clipboard.setPrimaryClip(clip);
source.performAction(AccessibilityNodeInfo.ACTION_PASTE);
Toast.makeText(MyAccessibilityService.this, "Pasted Successfully", Toast.LENGTH_LONG);
}
... 我已经尝试了其他一些出错的方法。所以这里的一个问题是为什么 return null?
Android 清单
<uses-permission android:name="android.permission.BIND_ACCESSIBILITY_SERVICE"/>
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">
<service android:name=".MyAccessibilityService" android:label="@string/app_name" android:enabled="true" android:exported="true">
<intent-filter>
<action android:name="android.accessibilityservice.AccessibilityService" android:resource="@xml/accessibility" />
</intent-filter>
Accessibility.xml
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
android:description="@string/accessibility_service_description"
android:packageNames="com.test.toasts2"
android:accessibilityEventTypes="typeAllMask"
android:accessibilityFlags="flagDefault"
android:accessibilityFeedbackType="feedbackSpoken"
android:notificationTimeout="100"
android:canRetrieveWindowContent="true"
android:settingsActivity="com.example.android.accessibility.ServiceSettingsActivity"
/>
您错过了清单文件中的元标记。只需添加。
<meta-data android:name="android.accessibilityservice"
android:resource="@xml/accessibility">
确保android:canRetrieveWindowContent="true"
这对我有用。而这个属性不能通过java代码设置。