Masalah dengan file metadata layanan aksesibilitas [Xamarin Android]

Saya sedang mengerjakan Layanan Aksesibilitas untuk Android di Xamarin.

Saat ini saya mencoba mereplikasi codelab (Java/Android SDK) ini, tetapi di Xamarin: https://codelabs.developers.google.com/codelabs/developing-android-a11y-service/#2

Intinya inilah Layanan Aksesibilitas saya:

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();
        }

    }
}

Ini file metadata saya:

<?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" />

Namun saya tidak dapat menemukan folder xml di dalam folder Resources proyek Xamarin.Android saya. Di sinilah Dokumentasi Resmi memberitahu saya untuk menempatkan file metadata saya di (ServiceConfig.xml). Saya mencoba membuat folder xml sendiri di dalam folder Resources tetapi menghasilkan kesalahan fail pemrosesan manifes dan resource xml/ServicConfig not found.

Saya akan merasa sangat terbantu jika seseorang dapat memberi tahu saya di mana dan bagaimana saya harus meletakkan file Metadata saya (ServiceConfig.xml) untuk AccessibilityService saya.


person 0xB01b    schedule 27.12.2020    source sumber
comment
Bisakah Anda memeriksa file AndroidManifest.xml yang dihasilkan pada waktu kompilasi? Itu harus di obj/Debug/Android atau di suatu tempat seperti itu. Bisa jadi ada beberapa hal yang hilang.   -  person Cheesebaron    schedule 28.12.2020
comment
Saya pikir ini adalah bagian yang relevan dari file yang dibuat secara otomatis (saya juga tahu Anda dari Forum Xamarin hehe): ‹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
Baiklah, jadi ini sungguh aneh tapi saya membuat file xml lain dan menaruhnya di folder xml, (kontennya sama persis seperti sebelumnya). Saya menamakannya config.xml alih-alih ServiceConfig, dan kemudian berfungsi saat saya menggunakan yang baru. Namun tetap tidak akan berfungsi dengan yang lama.   -  person 0xB01b    schedule 28.12.2020


Jawaban (1)


Jadi inilah yang memperbaiki kesalahannya. Saya menambahkan file metadata lain (dengan konten yang sama seperti sebelumnya) tetapi menamainya berbeda (config.xml dalam kasus saya), dan saya menggunakannya, dan berhasil. Namun itu masih tidak berfungsi dengan file lama (ServiceConfig.xml) karena alasan tertentu.

Setelah menambahkan file baru pastikan untuk mengedit atribut untuk menggunakan nama file baru:

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

person 0xB01b    schedule 28.12.2020
comment
Terima kasih telah berbagi. Jangan lupa menerima jawabannya. - person Wendy Zang - MSFT; 29.12.2020
comment
@ WendyZang-MSFT Saya akan melakukannya, tetapi saya harus menunggu 11 jam - person 0xB01b; 29.12.2020