Xamarin 与Android辅助功能服务共享公共AppResource字符串

Xamarin 与Android辅助功能服务共享公共AppResource字符串,xamarin,xamarin.android,Xamarin,Xamarin.android,我通过一个带有AppResources.resx文件的通用PCL共享iOS和Android应用程序的翻译。我访问C代码中的资源字符串,如AppResources.MyString 直到现在,当我在我的android应用程序中引入了一个可访问性服务时,这项功能一直运行良好 对于辅助功能服务,我需要提供一个描述。我能找到的唯一文档总是显示在accessibilityservice.xml文件中设置的描述,例如: <?xml version="1.0" encoding="utf-8" ?>

我通过一个带有AppResources.resx文件的通用PCL共享iOS和Android应用程序的翻译。我访问C代码中的资源字符串,如AppResources.MyString

直到现在,当我在我的android应用程序中引入了一个可访问性服务时,这项功能一直运行良好

对于辅助功能服务,我需要提供一个描述。我能找到的唯一文档总是显示在accessibilityservice.xml文件中设置的描述,例如:

<?xml version="1.0" encoding="utf-8" ?>
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
    android:accessibilityEventTypes="typeWindowStateChanged|typeWindowContentChanged"
    android:accessibilityFeedbackType="feedbackSpoken"
    android:accessibilityFlags="flagDefault"
    android:notificationTimeout="100"
    android:canRetrieveWindowContent="true"
    android:description="@string/accessibility_service_description" />
显然,我无法从accessibilityservice.xml文件访问AppResources.MyAccessibilityDiscString,那么如何向accessibilityservice描述提供我的可翻译AppResources字符串

我不想在android项目中只管理其他特定于android的字符串,而不是有一个公共位置,我的翻译人员可以为AppResources.resx设置所有字符串。

您无法在xml文件中获取AppResources.resx内容。不幸的是,AccessibilityServiceInfo的Description属性是只读的。因此,无法通过SetServiceInfo方法设置该值

我能想到的唯一选项是在string.xml文件中添加描述字符串

[Service(Permission = "android.permission.BIND_ACCESSIBILITY_SERVICE", Label = "MyApp")]
[IntentFilter(new string[] { "android.accessibilityservice.AccessibilityService" })]
[MetaData("android.accessibilityservice", Resource = "@xml/accessibilityservice")]
public class AutofillService : AccessibilityService
{
    ...
}