使用Android辅助功能服务共享通用AppResource字符串

时间:2017-01-31 05:10:04

标签: xamarin xamarin.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
{
    ...
}

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

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

1 个答案:

答案 0 :(得分:1)

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

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