java.lang.NoSuchMethodError: no non-static method with name='onNotificationPosted' signature='()V' in class Ljava.lang.Object;

у меня есть рабочее java приложение которое регистрирует приходящие уведомления на моем смартфоне, и показывает их у меня в приложении... Теперь мне нужно как-то показать эти уведомления у меня в unity приложении... Я сделал плагин, и вот мой java код(взят из рабочего андроид приложения, поэтому естественно без передачи полученных данных в Main Activity):

@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR2)
public class ReceiveIncomingNotifications extends NotificationListenerService {
    Context context;
    public String title;
    public String text;


    @RequiresApi(api = Build.VERSION_CODES.KITKAT)
    @Override

    public void onNotificationPosted(StatusBarNotification sbn) {
        String pack = sbn.getPackageName();
        String ticker ="";
        if(sbn.getNotification().tickerText !=null) {
            ticker = sbn.getNotification().tickerText.toString();
        }
        Bundle extras = sbn.getNotification().extras;
        title = extras.getString("android.title");
        text = extras.getCharSequence("android.text").toString();
        int id1 = extras.getInt(Notification.EXTRA_SMALL_ICON);
        Bitmap id = sbn.getNotification().largeIcon;

        if(id != null) {
            ByteArrayOutputStream stream = new ByteArrayOutputStream();
            id.compress(Bitmap.CompressFormat.PNG, 100, stream);
            byte[] byteArray = stream.toByteArray();

        }

    }
}

вот мой c# код, где я вызываю метод onNotificationPosted , присваиваю unity переменным содержимое java переменных, и затем уже через текст вывожу содержимое юнити переменных мне на экран:

public class ReceiveIncomingNotifications : MonoBehaviour
{
    public string Title;
    public string Text;
    public TextMeshProUGUI TextForTitle;
    public TextMeshProUGUI TextForBody;


    // Update is called once per frame
    void Update()
    {
        
        var plugin = new AndroidJavaClass("com.alexcompany.librarythatreceiveincomingnotificationsandpasstounity.ReceiveIncomingNotifications");
        plugin.Call("onNotificationPosted");
        Title = plugin.Get<string>("title");
        Text = plugin.Get<string>("text");
        TextForTitle.text = Title;
        TextForBody.text = Text;
    }
}

при запуске моего приложения в logcat получаю ошибку:

java.lang.NoSuchMethodError: no non-static method with name='onNotificationPosted' signature='()V' in class Ljava.lang.Object;

может ли это быть связано с тем что в java коде мой метод принимает аргумент, а в c# я просто пишу название этого метода? или может мне стоит создать interface в android-studio и callback в unity? При создании плагина я в проекте android studio создал android library, и затем получил ...-aar.release, который и вложил в Assets->Plugins->Android Пожалуйста, может кто-то знает что это за ошибка? Заранее спасибо!

UPD.: я так подумал, насчет C#... в void Update вызывать метод который должен срабатывать тогда когда уведомление приходит как-то странно... Ну а как тогда?


Ответы (0 шт):