Wpis z mikrobloga

Hej Mireczki, zna się tu ktos dobrze na #reactnative i #androiddev ???

Dostałem projekt w RN i na dzien dobry bloker( ͡° ͜ʖ ͡°)( ͡° ͜ʖ ͡°)( ͡° ͜ʖ ͡°)

Otóż mam juz istniejący projekt w react-native 0.43 , który używa targetSdkVersion 25, a ja muszę zrobic update do wersji minimum 26, najlepiej 27. Niestety apka #!$%@? na emu z Android 8+. Logcat pokazuje że crash jest z powodu poniższego błędu:

android.view.WindowManager$BadTokenException: Unable to add window android.view.ViewRootImpl$W@809d38d -- permission denied for window type 2003

Na chwile obecną doszedlem do tego, że to przez stałą
SYSTEMALERTWINDOW, ktora jest deprecated w api 26<.

Wywaliłem permission z SYSTEMALERTWINDOW w AndroidManifest.xml i dodałem TYPEAPPLICATIONOVERLAY.

Niestety apka dalej #!$%@? po powyzszej zmianiez z powodu tego samego błędu. Wyczytałem, że update do react-native 0.52 rozwiazuje problem, ale ja muszę zostac przy wersji 0.43.
Czy ktoś wie może jak sobie z tym poradzić?

#programowanie #android #react
  • 11
  • Odpowiedz
@soap141: Nie znam odpowiedzi na Twoje pytanie. Ale to bardzo fajny przyklad jak cos banalnego moze byc skaplikowane na frameworku do wszystkiego. Na pochybel z reactnative czy cordova.
  • Odpowiedz
Wywaliłem permission z SYSTEMALERTWINDOW w AndroidManifest.xml i dodałem TYPEAPPLICATIONOVERLAY.


@soap141: TYPEAPPLICATIONOVERLAY to nie permission tylko flaga na layoucie. Przeszukaj gdzie uzywasz LayoutParams.TYPETOAST czy TYPEAPPLICATIONPANEL czy SYSTEMALERT i zmien na TYPEAPPLICATIONOVERLAY. Musisz znalesc ta aktywnosc ktora ma taka flage.
  • Odpowiedz
@ra_s: zadna z podanych przez Ciebie wartosci, nie istnieje niestety w projkecie. W ogóle nie ogarniam Javy, ani struktury natyvnej apki androida. Cały czas robiłem w web devie a teraz taki kwiatek :P
Cos tam znalazłem na stack overflow, zeby ustawic ta flage na layoucie w zaleznosci od wersji androida, ale nie wiem nawet w ktorym miejscu.
  • Odpowiedz
  • 2
@soap141 jak trwoga z Google Play to januszowe rozwiązania.

Jeśli obstajesz przy głupim pomyśle podbicia samego SDK to upewnij się, że masz je zaciągnięte w Android studio. Potem googluj, bo na 100% jakiś pajeet to robił. Jak nie możesz znaleźć kodu to użyj rozszerzonej wyszukiwarki w edytorze(bez ignorowania plików).

Normalnie powinieneś podbić wersję RN, potem pewnie z 2 bibliotek, które jasno by zakomunikowała, że je też trzeba podbić i elo, ale to
  • Odpowiedz
@xDrope: a co do rebuilda, to po zmianie sdk w projekcie, zrobił sie automatycznie. Poza tym za kazdym razem kiedy odpalam react-native run-ios projekt tez sie rebuilduje, wiec chyba jest ok. głowy nie dam w kazdym razie ( ͡° ͜ʖ ͡°)
  • Odpowiedz
  • 0
@soap141 w wersji 16 stare API nadal jest utrzymywane - będziesz dostawał tylko yellowboxy, więc nie wiem gdzie problem xD co do reszty nie miałem takich problemów, bo aktualizuję biblioteki regularnie.
  • Odpowiedz