Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 29 mar 2024, o 13:27


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 13 ] 
Autor Wiadomość
PostNapisane: 13 maja 2018, o 10:38 
Offline
Użytkownik

Dołączył(a): 10 sty 2018
Posty: 159
Pomógł: 11

WITAM
Od wersji SDK=''23" i wyżej, musimy uzyskiwać pozwolenia wykonawcze w trakcie wykonywania się kodu. Goggle zmieniło politykę, wcześniej użytkownik musiał zatwierdzać podczas instalacji takie "niebezpieczne uprawnienia".
Teraz programista musi zadbać o to aby uzyskiwać pozwolenie na wykonywanie niebezpiecznych uprawnień w trakcie wykonywania się kodu(teoretycznie), oczywiście do pierwszego wystąpienia.

Wystarczy że raz aplikacja uzyska wymagane pozwolenie od użytkownika a zostanie to już "zapamiętane" w systemie. Po 20 października wszystkie aplikacje będą musiały być na SDK"26" manifest editor linia:
<uses-sdk android:minSdkVersion="5" android:targetSdkVersion="26"/>

Powiało groźnie, ale to prosta czynność.
1. Musimy uaktualnić wersję do B4A v8.0

2. Musimy sprawdzić jakie nasza aplikacja ma uprawnienia. Wchodzimy w zakładkę Logi (tam gdzie Menadżer
bibliotek, Menadżer plików, itd., prawy dolny róg ) a następnie klikamy w zakładkę Lista uprawnień.
Pojawi się okienko z uprawnieniami, wszystkie zaznaczone gwiazdką to uprawnienia niebezpieczne i musimy
przeprowadzić zabawę z uzyskiwaniem pozwolenia. Pozostałe uprawnienia możemy zignorować.

3. Dodajemy do projektu bibliotekę RuntimePermissions

4. Teraz możemy zrobić np. tak (to uprawnienia jednej z moich aplikacji) Tutaj dodaję je od razu:
Składnia: [ Pobierz ] [ Ukryj ]
język vb
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Aktywność (main)
Składnia: [ Pobierz ] [ Ukryj ]
język vb
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


To wszystko, żadnych uprawnień nie musimy wprowadzać do manifestu. Kompilator zrobi to automatycznie.

P.S.
Dla formalności te uprawnienia powinny być dodawane w różnych miejscach kodu, zgodnie z wytycznymi Google. Tutaj dodane zostały w jednym miejscu i przy pierwszym uruchomieniu aplikacji użytkownik będzie musiał zatwierdzać jedno po drugim. W tym przypadku pojawią się dokładnie dwa. Oczywiście takie grupowe zestawienie też działa... Przynajmniej na razie.



Ostatnio edytowano 13 maja 2018, o 14:23 przez tfosik, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 maja 2018, o 10:58 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27212
Lokalizacja: Szczecin
Pomógł: 1041

Bardzo cenna uwaga i ładnie pokazany sposób.

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 maja 2018, o 11:03 
Offline
Moderator zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 18 lip 2012
Posty: 3187
Lokalizacja: Kraków - obok FAB5 ATMEL'a
Pomógł: 89

No dobra a co jeśli programista o to nie zadba? Aplikacja nie będzie działać prawidłowo bo nie będzie mieć odpowiednich uprawnień?

Wolałbym żeby Erel zaszył to natywnie w B4A. :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 maja 2018, o 11:10 
Offline
Użytkownik

Dołączył(a): 10 sty 2018
Posty: 159
Pomógł: 11

Jeśli o to nie zadbasz to aplikacja przestanie działać prawidłowo, może ulegać awarii lub nie działać wcale.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 maja 2018, o 11:23 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27212
Lokalizacja: Szczecin
Pomógł: 1041

Jaglarz napisał(a):
No dobra a co jeśli programista o to nie zadba? Aplikacja nie będzie działać prawidłowo bo nie będzie mieć odpowiednich uprawnień?

Wolałbym żeby Erel zaszył to natywnie w B4A. :D


To właśnie Erel ładnie zadbał o to - i można to zrobić tak jak pokazał kolega wyżej ... Niestety gogel jak zwykle strasznie miesza - zmienia swoje API bez ostrzeżenia (tzn ok no z ostrzeżeniem i czasem wyprzedzeniem) .... ale co zrobić - monopolista i trza się dostosować. Ileż to Erel się musiał napocić gdy koci gogel wycofał okienkową wersję swojego aktualizatora Android SDK ... komu z nas - chciałoby się robić to z konsoli prawda ? ... no to Erel wziął się i napisał własną apkę - dzięki której można już ładnie pobierać i aktualizować NDK....

Te ograniczenia w najnowszej wersji systemów android są o tyle kocie, że zdaje się, że te uprawnienia i to i tak mały pikuś - w kolejnych wersjach swoich apek będzie trzeba robić wiele więcej zmian w innych miejscach jak się będzie chciało zaktualizować wersję po 20 września albo wypuścić nową .... Ja i tak podziwiam Erela - że on nad tym wciąż panuje bo musi co chwilę dostosowywać przecież B4A i KUPĘ - na prawdę Kupę różnych bibliotek do B4A żeby były zgodne ...

Ja np teraz walczę z głupimi powiadomieniami (Notify) ... a mój stary poradnik wideo w tym zakresie można powiedzieć, że jest już w 60% nieaktualny ;)

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 maja 2018, o 11:31 
Offline
Użytkownik

Dołączył(a): 10 sty 2018
Posty: 159
Pomógł: 11

Już teraz w wersji androida 8.0 np moduł starter może być ubity przez system tak jak każda inna aktywność . Erel obiecał że naprawi to w wersji v 8.1 B4A .



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 maja 2018, o 11:32 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27212
Lokalizacja: Szczecin
Pomógł: 1041

tfosik napisał(a):
Już teraz w wersji androida 8.0 np moduł starter może być ubity przez system tak jak każda inna aktywność . Erel obiecał że naprawi to w wersji v 8.1 B4A .

Dokładnie ... oby mu się udało ;) ...

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 maja 2018, o 13:53 
Offline
Użytkownik

Dołączył(a): 19 lip 2013
Posty: 759
Pomógł: 37

i wychodzi na to ,ze trzeba wykupić uaktualnienia na następne 2 lata



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 maja 2018, o 14:04 
Offline
Użytkownik

Dołączył(a): 10 sty 2018
Posty: 159
Pomógł: 11

To najlepsza z możliwych opcji. Do końca roku może być jeszcze wiele uaktualnień.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 maja 2018, o 18:59 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27212
Lokalizacja: Szczecin
Pomógł: 1041

tfosik napisał(a):
To najlepsza z możliwych opcji.

dokładnie tym bardziej, że Erel wciąż ostro pracuje nad rozwojem B4A

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 maja 2018, o 11:33 
Offline
Użytkownik

Dołączył(a): 10 sty 2018
Posty: 159
Pomógł: 11

Witam
W pierwszym poście napisałem że uzyskiwanie pozwolenia od użytkownika ma odbywać się w trakcie wykonywania kodu. Teraz pokażę jak to można zrobić.
Dla przykładu mamy aplikację która wysyła wiadomości SMS. Aplikacja posiada cztery przyciski P1, P2, P3, P4. Po kliknięciu w któryś z przycisków telefon wysyła wiadomość SMS pod określony numer telefonu. Zgodnie z zaleceniami GOOGLE (teoretycznie) powinniśmy uzyskiwać takie pozwolenie w każdym z przycisków.....bo nie wiemy w który z nich użytkownik kliknie jako pierwszy. W tym przypadku pozwolenie wykonawcze to "PERMISSION_SEND_SMS"
Dla przykładu kod mógłby wyglądać tak:
Składnia: [ Pobierz ] [ Ukryj ]
język vb
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Tak należałoby postąpić dla pozostałych przycisków P2, P3, P4..... Możemy jednak uprościć sobie sprawę i zamiast za każdym razem wywoływać metodę "CheckAndRequest" skorzystać z metody "Check".

Metoda check sprawdza tylko czy aplikacja uzyskała już od użytkownika pozwolenie, zwraca true jeśli tak lub false jeśli nie.
Można ją stosować w każdym module (aktywności, serwisowym czy module klasy).
Metodę CheckAndRequest możemy stosować tylko w aktywnościach... z racji tego iż w pozostałych modułach nie można wyświetlić okienka komunikatów.

A tutaj mały przykład jak można stosować metodę Check

Składnia: [ Pobierz ] [ Ukryj ]
język vb
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Ostatnio edytowano 15 maja 2018, o 17:15 przez tfosik, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 maja 2018, o 13:50 
Offline
Moderator zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 18 lip 2012
Posty: 3187
Lokalizacja: Kraków - obok FAB5 ATMEL'a
Pomógł: 89

Widzę że tfosik będzie cennym nabytkiem w tym dziale. ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 maja 2018, o 09:03 
Offline
Użytkownik

Dołączył(a): 10 sty 2018
Posty: 159
Pomógł: 11

Witam
Jeszcze małe doprecyzowanie.
Parametr targetSdkVersion ma na celu zapewnić kompatybilność wsteczną... To oznacza że jeżeli np. ustawiony jest na 22 i poniżej, system uruchomi aplikację bez zmian wprowadzonych w API 23+ i aplikacja będzie działać "normalnie" na nowych systemach. Dla przykładu jeżeli aplikacja ma ustawioną wartość targetSdkVersion=14 (android 4.0), to będzie działać na Android 8.0, bez zabawy z uprawnieniami wykonawczymi itp.

Niestety Google wymusza na programistach aby od sierpnia tego roku w przypadku nowych aplikacji, i od listopada tego roku w przypadku istniejących aplikacji, parametr targetSdkVersion ustawiony był na 26+.

https://android-developers.googleblog.c ... mance.html.

Taki wymóg niestety powoduje że musimy np. "uskutecznić" zabawę z uprawnieniami wykonawczymi.

P.S
Jeszcze mała uwaga dla tych którzy mają aplikację na sklepie Google... Sprawdź 10 razy czy twoja aplikacja działa dobrze z nowymi ustawieniami na nowym systemie (Android 8.0 +). Jeżeli uaktualnisz aplikację na sklepie do targetSdkVersion = 23+, powrotu do niższej wersji już nie będzie.

------------------------ [ Dodano po: 21 maja 2018, o 09:03 ]

------------------------ [ Dodano po: 21 maja 2018, o 09:03 ]

Witam
Małe sprostowanie.....napisałem wyżej że niczego nie musimy dodawać do manifestu...Otóż nie do końca jest to prawda, wszystko zależy od bibliotek które wykorzystujemy w naszych projektach. Większość bibliotek dodaje te uprawnienia do manifestu ale nie wszystkie. Nie musimy zgadywać, klikamy w listę uprawnień i od razu widać które uprawnienia są dodane a, które nie. Jeżeli któregoś brakuje to dodajemy je ręcznie do manifestu np. tak:
Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Przepraszam jeżeli kogoś wprowadziłem w błąd.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 13 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO