Monodroid java库绑定:如何将所有构造函数设置为public

时间:2014-07-13 21:25:17

标签: xamarin xamarin.android java

我正在尝试将java库引入我的monodroid项目。我正在使用Amazon Mobile Associates库,我正在尝试这样做:

  

AssociatesAPI.Initialize(new AssociatesAPI.Config(APPLICATION_KEY,this));

不幸的是,即使这个AssociatesAPI.Config(字符串,上下文)构造函数是公共的,它也在使用第二个构造函数:

public Config (string p0, Context p1) : base (IntPtr.Zero, JniHandleOwnership.DoNotTransfer)

和构造函数

protected Config (IntPtr javaReference, JniHandleOwnership transfer) : base (javaReference, transfer)

受到保护。

当我使用 Metadata.xml 时,我可以设置类构造函数public:

< attr path="/api/package[@name='com.amazon.device.associates']/class[@name='AssociatesAPI.Config']/constructor" name="visibility">public< /attr>

但是这只设置了一个构造函数,受保护的构造函数保持受保护。因此,当我在我的应用中使用此库时,我得到错误

Error CS1540: Cannot access protected member   `Com.Amazon.Device.Associates.AssociatesAPI.Config.Config(System.IntPtr,     Android.Runtime.JniHandleOwnership)' via a qualifier of type     `Com.Amazon.Device.Associates.AssociatesAPI.Config'. 

The qualifier must be of type `Mews.Client.Navigator.TabletAndroid.Activities.Services.ServiceDetailActivity' (<i>this is my activity I'm passing as a Context</i>) or derived from it (CS1540)

Error CS0122: `Com.Amazon.Device.Associates.AssociatesAPI.Config.Config(System.IntPtr, Android.Runtime.JniHandleOwnership)' is inaccessible due to its protection level (CS0122) (Mews.Client.Navigator.TabletAndroid)

当我编译库项目时,没有关于未找到节点或错误xpath的错误或警告,这通常在attr中指定错误的路径或类名时出现。

任何人都可以帮助我吗?

谢谢

1 个答案:

答案 0 :(得分:0)

在Transforms / Metadata.xml中添加如下内容:

<attr path="/api/package[@name='Name_of_the_package']/class[@name='myclass']/method[@name='methodname']" name="visibility"> public</attr>