Xamarin Android библиотека привязок, имеет защищенный доступ в перегруженной функции - PullRequest
0 голосов
/ 23 апреля 2020

Я пытаюсь связать Nordi c библиотека полупроводниковых элементов android ble с формами ксамарина.

Я исправил все ошибки сборки в библиотеке, когда я пытаюсь использовать В библиотеке появляется больше ошибок.

Error:


Severity    Code    Description Project File    Line    Source  Suppression State
Error       error: BleManagerGattCallback has protected access in BleManager
    extends no.nordicsemi.android.ble.BleManager.BleManagerGattCallback BleTester.Android   C:\Users\a\source\repos\a Apps\Libraries\Bluetooth\BleTester\BleTester.Android\obj\Debug\MonoAndroid90\android\src\md5f9d62554e6ef444a8267557217d83b8b\MyManagerGattCallback.java   5   Build   


Severity    Code    Description Project File    Line    Source  Suppression State
Error       error: cannot find symbol
        if (getClass () == MyManagerGattCallback.class)
  symbol:   method getClass()
  location: class MyManagerGattCallback BleTester.Android   C:\Users\a\source\repos\a Apps\Libraries\Bluetooth\BleTester\BleTester.Android\obj\Debug\MonoAndroid90\android\src\md5f9d62554e6ef444a8267557217d83b8b\MyManagerGattCallback.java   23  Build   

MyManagerGattCallback. java

package md5f9d62554e6ef444a8267557217d83b8b;


public class MyManagerGattCallback
    extends no.nordicsemi.android.ble.BleManager.BleManagerGattCallback
    implements
        mono.android.IGCUserPeer
{
/** @hide */
    public static final String __md_methods;
    static {
        __md_methods = 
            "n_isRequiredServiceSupported:(Landroid/bluetooth/BluetoothGatt;)Z:GetIsRequiredServiceSupported_Landroid_bluetooth_BluetoothGatt_Handler\n" +
            "n_onDeviceDisconnected:()V:GetOnDeviceDisconnectedHandler\n" +
            "";
        mono.android.Runtime.register ("BleLibrary.NordicScanner.MyManagerGattCallback, BleLibrary", MyManagerGattCallback.class, __md_methods);
    }


    public MyManagerGattCallback ()
    {
        super ();
        if (getClass () == MyManagerGattCallback.class)
            mono.android.TypeManager.Activate ("BleLibrary.NordicScanner.MyManagerGattCallback, BleLibrary", "", this, new java.lang.Object[] {  });
    }


    public boolean isRequiredServiceSupported (android.bluetooth.BluetoothGatt p0)
    {
        return n_isRequiredServiceSupported (p0);
    }

    private native boolean n_isRequiredServiceSupported (android.bluetooth.BluetoothGatt p0);


    public void onDeviceDisconnected ()
    {
        n_onDeviceDisconnected ();
    }

    private native void n_onDeviceDisconnected ();

    private java.util.ArrayList refList;
    public void monodroidAddReference (java.lang.Object obj)
    {
        if (refList == null)
            refList = new java.util.ArrayList ();
        refList.add (obj);
    }

    public void monodroidClearReferences ()
    {
        if (refList != null)
            refList.clear ();
    }
}

Кажется, прямо вперед go в BleManager.BleManagerGattCallback и изменить его видимость для публикации c. Это было сделано. Я думаю, что проблема в том, что этот метод перегружен. Перегруженный метод защищен, но я не могу найти правильное преобразование, чтобы опубликовать его c.

    protected BleManagerGattCallback (IntPtr javaReference, JniHandleOwnership transfer) : base (javaReference, transfer) {}

    // Metadata.xml XPath constructor reference: path="/api/package[@name='no.nordicsemi.android.ble']/class[@name='BleManager.BleManagerGattCallback']/constructor[@name='BleManager.BleManagerGattCallback' and count(parameter)=0]"
    [Register (".ctor", "()V", "")]
    public unsafe BleManagerGattCallback ()
        : base (IntPtr.Zero, JniHandleOwnership.DoNotTransfer)
    {
        const string __id = "()V";

        if (((global::Java.Lang.Object) this).Handle != IntPtr.Zero)
            return;

        try {
            var __r = _members.InstanceMethods.StartCreateInstance (__id, ((object) this).GetType (), null);
            SetHandle (__r.Handle, JniHandleOwnership.TransferLocalRef);
            _members.InstanceMethods.FinishCreateInstance (__id, this, null);
        } finally {
        }
    }
...