Home / Android-Entwicklung / Das Android Arsenal – Berechtigungen

Das Android Arsenal – Berechtigungen

Eine kompakte Android-Bibliothek, die den Code der Laufzeitberechtigung für Boilerplate umschließt und es Ihnen ermöglicht, Berechtigungen von Coroutinen anzufordern (keine Rückrufe yay 🎉 ) oder Berechtigungen über LiveData anzufordern und zu beobachten.

In Ihr Projekt aufnehmen [19659003] Eazy-Berechtigungen sind im Jcenter verfügbar und in zwei Module unterteilt, sodass Sie je nach Bedarf entweder Coroutinen oder Livedata in Ihr Projekt aufnehmen können.

 //  Für Coroutinen 

Implementierung  'com.sagar: coroutinespermission: [latest_version] ' 

 //  Für LiveData 

Implementierung  'com.sagar: livedatapermission: [latest_version] ' 
  • neueste_Version für Coroutinen –
  • neueste_Version für Livedata –

Coroutines-Support

Die Erlaubnis liegt nur vor Ein einfacher Funktionsaufruf für die Suspend-Funktion requestPermissions von PermissionManager aus Ihren Coroutinen oder einer anderen Suspend-Funktion, die PermissionResult zurückgibt. Es sind 3 Parameter erforderlich.

  1. Eine Instanz von AppCompactActivity oder Fragment, je nachdem, von wo aus Sie eine Berechtigung anfordern.
  2. Anforderungs-ID.
  3. Verschiedene Berechtigungsvarianten, die Sie anfordern möchten.

Dies ist die Art, wie Sie sie anfordern würden Erlaubnis innerhalb von Koroutinen und Ergebnis sequentiell abrufen.




.
.
.
starten {
     //  CoroutineScope 

 val  permissionResult  =  PermissionManager  .requestPermissions ( //  Suspends the coroutine 
 this [Fragment
 REQUEST_ID 
,
                             Manifest .  Erlaubnis .  ACCESS_FINE_LOCATION 
,
                             Manifest .  Erlaubnis .  READ_CONTACTS 
,
                             Manifest .  Erlaubnis .  KAMERA 



                        )
                        
     //  Coroutine fortsetzen, sobald das Ergebnis vorliegt 
wenn 
 (permissionResult) {
         ist  PermissionResult .  PermissionGranted  - > 
 {
             //  Fügen Sie hier Ihre Logik hinzu, nachdem der Benutzer die Berechtigung (en) erteilt hat. 


        }
         ist  PermissionResult .  PermissionDenied  - > 
 {
             //  Fügen Sie Ihre Logik hinzu, um die Verweigerung von Berechtigungen zu behandeln. 


        }
         ist  PermissionResult .  PermissionDeniedPermanently  - > 
 {
             //  Fügen Sie hier Ihre Logik hinzu, wenn der Benutzer die Berechtigung (en) dauerhaft verweigert hat. 

             //  Idealerweise sollten Sie den Benutzer bitten, manuell zu den Einstellungen zu wechseln und die Berechtigungen zu aktivieren. 


        }
         ist  PermissionResult .  ShowRational  - > 
 {
             //  Wenn der Benutzer häufig die Erlaubnis verweigert, ist ihm nicht klar, warum Sie diese Erlaubnis verlangen. 

             //  Dies ist Ihre Chance, ihnen zu erklären, warum Sie eine Erlaubnis benötigen. 




        }
    }

} 

Sie können die Erlaubnis von der Coroutine anfordern, die mit einem beliebigen Dispatcher gestartet wurde (IO / Default / Main).

Die Bibliothek macht PermissionResult als Ergebnis einer Erlaubnisanfrage verfügbar, die nichts anderes als eine einfache versiegelte Klasse ist, die alles Mögliche umschließt Ergebnisse.

 versiegelt  Klasse  PermissionResult 
 {
     Klasse  PermissionGranted  ( val  requestId :  Int ) :  PermissionResult 
 ()
     Klasse  PermissionDenied  ( val  requestId :  Int  val  deniedPermissions :  Liste ] < Zeichenfolge >) :  PermissionResult 
 ()
     Klasse  ShowRational  ( val  requestId :  Int ) :  PermissionResult 
 ()
     Klasse  PermissionDeniedPermanently  ( val  requestId :  Int  val  permanentDeniedPermissions : [196590014Liste]  < Zeichenfolge >) :  PermissionResult 
 ()
} 

Hinweis PermissionDenied und PermissionDeniedPermanently machen auch eine Liste mit verweigerten und dauerhaft verweigerten Berechtigungen verfügbar, sodass Sie Ihren Datenfluss basierend auf den verweigerten Berechtigungen festlegen können, wenn Sie dies möchten. [19659002] LiveData-Unterstützung

Nur im Fall einer Coroutine, die wir oben gesehen haben, ist das Anfordern einer Erlaubnis nur ein einfacher Methodenaufruf an PermissionManager von Ihrer Aktivität / Fragment. Es sind 3 Parameter erforderlich.

  1. Eine Instanz von AppCompactActivity oder Fragment, je nachdem, von wo aus Sie eine Berechtigung anfordern.
  2. Anforderungs-ID.
  3. Verschiedene Berechtigungsvarianten, die Sie anfordern möchten.

So fordern Sie Berechtigungen von Ihrer an Aktivität / Fragment.

 PermissionManager 
 .requestPermissions (
                 dies 
,
                 REQUEST_ID 
,
                 Manifest .  Erlaubnis .  ACCESS_FINE_LOCATION 
,
                 Manifest .  Erlaubnis .  READ_CONTACTS 

            ) 

Ergebnis der Berechtigungsanforderung beobachten

Mit nur einem einfachen Schritt (Implementierung einer Schnittstelle) können Sie das Ergebnis der Anforderung beobachten. Ihre Aktivität / Fragment muss die Methode setupObserver der Schnittstelle PermissionObserver implementieren, die LiveData < PermissionResult > verfügbar macht. Hier ist die Definition von PermissionObserver

 / *  * 
* Schnittstellendefinition für einen Rückruf nach [LiveData]  von [PermissionResult] 
  * 
* Implementieren Sie diese Schnittstelle, um [LiveData]  zum Beobachten des Berechtigungsanforderungsergebnisses abzurufen.
 * / 
 Schnittstelle  PermissionObserver 
 {
     Spaß  setupObserver  ( permissionResultLiveData :  LiveData  < PermissionResult 
>)
} 

Die Bibliothek ruft die Methode setupObserver nur auf, wenn Sie zum ersten Mal eine Berechtigung anfordern. Alle aufeinanderfolgenden Aufrufe von requestPermissions (19459021) verwenden dieselbe Beobachtermethode. 19659047 So wie Sie auch andere LiveData beobachten würden, können Sie LiveData <19459021] PermissionResult > wie folgt beobachten:

 überschreiben  Spaß  setupObserver  ( permissionResultLiveData :  LiveData  < PermissionResult 
>) {
    permissionResultLiveData.observe ( this  Observer  < PermissionResult 
> {
         als 
 (es) {
             ist  PermissionResult .  PermissionGranted  - > 
 {
                 if  (it.requestId  ==  REQUEST_ID 
) {
                     //  Fügen Sie hier Ihre Logik hinzu, nachdem der Benutzer die Berechtigung (en) erteilt hat. 



                }
            }
             ist  PermissionResult .  PermissionDenied  - > 
 {
                 if  (it.requestId  ==  REQUEST_ID 
) {
                     //  Fügen Sie Ihre Logik hinzu, um die Verweigerung von Berechtigungen zu behandeln. 



                }
            }
             ist  PermissionResult .  PermissionDeniedPermanently  - > 
 {
                 if  (it.requestId  ==  REQUEST_ID 
) {
                     //  Fügen Sie hier Ihre Logik hinzu, wenn der Benutzer die Berechtigung (en) dauerhaft verweigert hat. 

                     //  Idealerweise sollten Sie den Benutzer bitten, manuell zu den Einstellungen zu wechseln und die Berechtigungen zu aktivieren. 



                }
            }
             ist  PermissionResult .  ShowRational  - > 
 {
                 if  (it.requestId  ==  REQUEST_ID 
) {
                     //  Wenn der Benutzer häufig die Erlaubnis verweigert, ist ihm nicht klar, warum Sie diese Erlaubnis verlangen. 

                     //  Dies ist Ihre Chance, ihnen zu erklären, warum Sie eine Erlaubnis benötigen. 





                }
            }
        }
    })
} 

Es ist obligatorisch, PermissionObserver dort zu implementieren, wo Sie eine Berechtigung anfordern (entweder Aktivität oder Fragment). Wenn Sie dies nicht tun, wird die Bibliothek die IllegalArgumentException auslösen, die besagt, dass Sie PermissionObserver

implementieren müssen. Die Bibliothek kümmert sich also auch dann um die Aktivität / Fragmentwiederherstellung, wenn der Benutzer den Bildschirm dreht oder aus einem anderen Grund Wenn Ihre Aktivität / Ihr Fragment neu erstellt wird, wird die Methode setupObserver aufgerufen, um einen neuen Beobachter von LiveData zu registrieren. oder Probleme gefunden? Weitere Informationen zu Beiträgen zu dieser Bibliothek finden Sie unter Richtlinien für Beiträge.

Screenshots des Beispiels














 Copyright 2019 Sagar Viradiya

Lizenziert unter der Apache-Lizenz, Version 2.0 (die "Lizenz");
Sie dürfen diese Datei nur in Übereinstimmung mit der Lizenz verwenden.
Eine Kopie der Lizenz erhalten Sie unter

   http://www.apache.org/licenses/LICENSE-2.0

Sofern nicht gesetzlich vorgeschrieben oder schriftlich vereinbart, Software
unter der Lizenz vertrieben wird auf einer "AS IS" -Basis verteilt,
OHNE GARANTIEN ODER BEDINGUNGEN JEGLICHER Art, entweder ausdrücklich oder stillschweigend.
In der Lizenz finden Sie die spezifische Sprache für die Berechtigungen und
Einschränkungen unter der Lizenz.

.

About AndroidWeltEditor

Check Also

An introduction to the Google Play Console for Android Developers

If you want to be a successful app developer, learning how to code and build …

Leave a Reply

Your email address will not be published. Required fields are marked *