与 Android 无障碍服务共享常见的应用资源字符串



我通过具有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" />

它绑定到服务,如下所示:

[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
{
    ...
}

显然,我无法从accessibilityservice.xml文件中访问AppResources.MyAccessibilityDescString,那么如何将可翻译的AppResources字符串提供给无障碍服务说明?

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

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

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

最新更新