ปัญหาเกี่ยวกับไฟล์ข้อมูลเมตาของบริการการเข้าถึง [Xamarin Android]

ฉันกำลังพัฒนาบริการการเข้าถึงสำหรับ Android ใน Xamarin

ขณะนี้ฉันกำลังพยายามจำลอง codelab (Java/Android SDK) นี้ แต่ใน Xamarin: https://codelabs.developers.google.com/codelabs/developing-android-a11y-service/#2

โดยพื้นฐานแล้วนี่คือบริการการเข้าถึงของฉัน:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Android;
using Android.AccessibilityServices;
using Android.App;
using Android.Content;
using Android.Graphics;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Views.Accessibility;
using Android.Widget;

namespace AccessibilityServiceTest.Droid.Services
{
    [Service(Label = "Input Utility", Permission = Manifest.Permission.BindAccessibilityService)]
    [IntentFilter(new string[] { "android.accessibilityservice.AccessibilityService" })]
    [MetaData("android.accessibilityservice", Resource = "@xml/ServiceConfig")]
    public class TapService : AccessibilityService
    {

        public override void OnAccessibilityEvent(AccessibilityEvent e)
        {
        }

        public override void OnInterrupt()
        {
        }

        public override bool OnUnbind(Intent intent)
        {
            return base.OnUnbind(intent);
        }

        protected override void OnServiceConnected()
        {
            base.OnServiceConnected();
        }

    }
}

นี่คือไฟล์ข้อมูลเมตาของฉัน:

<?xml version="1.0" encoding="utf-8" ?>
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
   android:accessibilityFeedbackType="feedbackGeneric"
   android:accessibilityFlags="flagDefault"
   android:canPerformGestures="true"
   android:canRetrieveWindowContent="true" />

อย่างไรก็ตาม ฉันไม่พบโฟลเดอร์ xml ภายในโฟลเดอร์ Resources ของโครงการ Xamarin.Android ของฉัน นี่คือที่ที่เอกสารอย่างเป็นทางการบอกให้ฉันวางไฟล์ข้อมูลเมตาของฉันใน (ServiceConfig.xml) ฉันพยายามสร้างโฟลเดอร์ xml ของตัวเองภายในโฟลเดอร์ ทรัพยากร แต่ทำให้เกิดข้อผิดพลาด การประมวลผลรายการล้มเหลว และข้อผิดพลาด ทรัพยากร xml/ServicConfig ไม่พบ

ฉันจะพบว่ามีประโยชน์มากหากมีคนบอกฉันว่าฉันควรวางไฟล์ Metadata (ServiceConfig.xml) ไว้ที่ไหนและอย่างไรสำหรับ AccessibilityService ของฉัน


person 0xB01b    schedule 27.12.2020    source แหล่งที่มา
comment
คุณสามารถตรวจสอบไฟล์ AndroidManifest.xml ที่สร้างขึ้นในเวลาคอมไพล์ได้หรือไม่? มันควรจะอยู่ใน obj/Debug/Android หรือที่ไหนสักแห่งเช่นนั้น อาจจะขาดบางสิ่งบางอย่างไปก็ได้   -  person Cheesebaron    schedule 28.12.2020
comment
ฉันคิดว่านี่เป็นบิตที่เกี่ยวข้องจากไฟล์ที่สร้างอัตโนมัติ (ฉันรู้จักคุณจากฟอรัม Xamarin อิอิ): ‹service android:label=Input Utility android:permission=android.permission.BIND_ACCESSIBILITY_SERVICE android:name=crc64608a83016c077e5b.TapService› ‹meta -data android:name=android.accessibilityservice android:resource=@xml/ServiceConfig /› ‹intent-filter› ‹action android:name=android.accessibilityservice.AccessibilityService /› ‹/intent-filter› ‹/service›   -  person 0xB01b    schedule 28.12.2020
comment
เอาล่ะ นี่มันแปลกจริงๆ แต่ฉันสร้างไฟล์ xml อีกไฟล์แล้ววางไว้ในโฟลเดอร์ xml (เนื้อหาเหมือนเดิมทุกประการ) ฉันตั้งชื่อมันว่า config.xml แทนที่จะเป็น ServiceConfig จากนั้นมันจะใช้งานได้เมื่อฉันใช้อันใหม่ แต่ก็ยังใช้งานไม่ได้กับอันเก่า   -  person 0xB01b    schedule 28.12.2020


คำตอบ (1)


นี่คือสิ่งที่แก้ไขข้อผิดพลาด ฉันเพิ่มไฟล์ข้อมูลเมตาอื่น (ที่มีเนื้อหาเหมือนเดิม) แต่ตั้งชื่อให้แตกต่าง (config.xml ในกรณีของฉัน) และฉันก็ใช้มันแทนและมันก็ได้ผล อย่างไรก็ตาม มันยังคงใช้งานไม่ได้กับไฟล์เก่า (ServiceConfig.xml) ด้วยเหตุผลบางประการ

หลังจากเพิ่มไฟล์ใหม่แล้ว อย่าลืมแก้ไขแอตทริบิวต์เพื่อใช้ชื่อไฟล์ใหม่:

[MetaData("android.accessibilityservice", Resource = "@xml/config")]

person 0xB01b    schedule 28.12.2020
comment
ขอบคุณสำหรับการแบ่งปัน. อย่าลืมที่จะยอมรับคำตอบ - person Wendy Zang - MSFT; 29.12.2020
comment
@ WendyZang-MSFT ฉันจะทำ แต่ฉันต้องรอ 11 ชั่วโมง - person 0xB01b; 29.12.2020