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 вызывать метод который должен срабатывать тогда когда уведомление приходит как-то странно... Ну а как тогда?