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

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA w 2025? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 19 maja 2025, o 18:40


    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: 160
    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 ] [ Zaznacz wszystko ]
    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: 27401
    Lokalizacja: Szczecin
    Pomógł: 1043

    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: 3228
    Lokalizacja: Kraków - obok FAB5 ATMEL'a
    Pomógł: 91

    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

    _________________
    http://www.jaglarz.info



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

    Dołączył(a): 10 sty 2018
    Posty: 160
    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: 27401
    Lokalizacja: Szczecin
    Pomógł: 1043

    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: 160
    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: 27401
    Lokalizacja: Szczecin
    Pomógł: 1043

    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: 771
    Pomógł: 40

    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: 160
    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: 27401
    Lokalizacja: Szczecin
    Pomógł: 1043

    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: 160
    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 ] [ Zaznacz wszystko ]
    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: 3228
    Lokalizacja: Kraków - obok FAB5 ATMEL'a
    Pomógł: 91

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

    _________________
    http://www.jaglarz.info



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

    Dołączył(a): 10 sty 2018
    Posty: 160
    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