Home / Android-Entwicklung / Das Android Arsenal – Berechtigungen

Das Android Arsenal – Berechtigungen

Weil wir nicht unhöflich sein müssen, um nach Berechtigungen zu fragen

ExcuseMe ist eine Android-Bibliothek, die eine einzeilige Implementierung für mit Kotlin erstellte Android-Berechtigungen bietet.

 val  erteilt : [19659004]  Boolean =  Entschuldigung  .couldYouGive ( this ). PermissionFor ( android .  Manifest .  Erlaubnis  ].  KAMERA ) 

🚀 Warum sollten Sie ExcuseMe verwenden?

  1. Bessere Leistung mit Kotlin Coroutines
    • Eine bessere Leistung im Vergleich zu anderen Bibliotheken, die Thread verwenden, da weniger Speicher benötigt wird haben eine bessere Leistung als Threads für kleine asynchrone / UI-Thread-Änderungen.
  2. Einzeilige Berechtigungsanforderung
    • ExcuseMe kann mit Kotlin Suspending-Funktionen verwendet werden, die eine bessere Syntax und bessere Lesbarkeit des Codes bieten
      • Mit ExcuseMe müssen Sie cal nicht implementieren lbacks-Schnittstellen, für deren Pflege nur Boilerplate-Code hinzugefügt wird
    • Kann mit Lambda-Rückrufen verwendet werden
      • Wenn Sie nicht wissen, wie Suspend-Funktionen implementiert werden, kann ExcuseMe mit Kotlin-Lambda-Rückrufen verwendet werden.
    • Höfliche Art zu fragen für Anfragen
      • Da wir nicht unhöflich sein müssen, um nach Berechtigungen zu fragen

📖 Verwendung

ExcuseMe ist eine einfachere Möglichkeit, Berechtigungen in Android zu implementieren. Sie müssen die Berechtigung jedoch noch in die Datei AndroidManifest.xml einfügen.

 <?  xml   version  =  " 1.0 "   Kodierung  =  " utf-8 " 
?>
< manifest  xmlns :  android  =  " http://schemas.android.com/apk/res/android " 

     package  =  " your.package.name " 

>

     <! -  Fügen Sie hier Ihre Erlaubnis hinzu  -> 

    < Verwendungserlaubnis  android :  name  =  " android.permission.CAMERA " 

 />
    
    < application 
 android :  icon  =  " @ mipmap / ic_launcher " 

         android :  roundIcon  =  " @ mipmap / ic_launcher_round " 


        ...
    

</  manifest > 

Die vollständige Liste der Berechtigungen finden Sie in dieser Dokumentation.

Danach können Sie eine der beiden folgenden Implementierungen verwenden, um die Berechtigung ordnungsgemäß hinzuzufügen:

  1. Die Einfache einzeilige Verwendung
  2. Kotlin Lambda-Rückrufnutzung

Einfache einzeilige Verwendung

Diese Implementierung verwendet Suspend-Funktionen, um die Berechtigungsanforderung zu vereinfachen. Die Antwort des Berechtigungsdialogs wird asynchron abgehört, sodass die Benutzeroberfläche nicht angehalten wird.

 suspend  fun  cameraUsage 
 () {
  if  ( ExcuseMe  .couldYouGive ( this ). PermissionFor ( android .  Manifest .  erlaubnis .  KAMERA 
) {
   //  Mach deine Kamera-Sachen 


 }}
} 

Und das war's. Überschreiben Sie nicht mehr die Implementierung von onRequestPermissionsResult () für Ihre Aktivität, keine Klassenbereichsvariablen mehr, um das zu behalten, was Sie für das Berechtigungsergebnis wünschen, und keine weiteren Boilerplates mehr, die in Ihrem Code verwaltet werden müssen.

Wenn Sie mehr darüber erfahren möchten, wie Um Suspend-Funktionen zu verwenden, empfehle ich dieses Video, um es zu verstehen.

Verwendung von Kotlin Lambda-Rückrufen

Diese Implementierung verwendet nachfolgende Lambdas-Rückrufe, daher ist es natürlich wie eine OnClickListener-Implementierung.

 überschreiben  ] fun  onCreate  ( savedInstanceState :  Bundle? 
) {
     super 
 .onCreate (savedInstanceState)
    setContentView ( R 

 .layout.activity_main)

     Entschuldigung  .couldYouGive ( this 
). PermissionFor (
         android .  Manifest .  Erlaubnis .  KAMERA 

,
        ) {
         if  (it.granted.contains ( android .  Manifest .  Erlaubnis .  KAMERA 
) {
             //  Mach deine Kamera-Sachen 



        }}
    }}
} 

Diese Methode muss keine Suspend-Funktion verwenden, verwendet jedoch einen Rückruf.

📦 Installation

Schritt 1. Fügen Sie das JitPack-Repository zu Ihrer Projekterstellungsdatei hinzu

  • build.gradle (Projekt: YourProjectName)
 allprojects 

 {
 Repositories {
  maven {url  ' https://jitpack.io ' 

}
 }}
} 

Schritt 2. Fügen Sie die Abhängigkeit zu Ihrer App-Build-Datei hinzu.

  • build.gradle (Modul: App)
 Abhängigkeiten 
 {
 Implementierung  ' com.github.AraujoJordan: ExcuseMe: x.x.x ' 

} 

Und das war's!

🌟 Extras

ExcuseMe verfügt über einfache Funktionen, die dem Benutzer bei Problemen mit Berechtigungen helfen.

Anfordern mehrerer Berechtigungen

Sie können auch mehrere Berechtigungen ausführen Anfrage in der gleichen Funktion und Syntax.

 suspend  fun  lotOfPermissions 
 () {
  val  res  =  Entschuldigung  .couldYouGive ( this ). PermissionFor ( android .  Manifest .  Erlaubnis .  KAMERA  Android .  Manifest .  Erlaubnis .  RECORD_AUDIO  android .  Manifest .  Erlaubnis .  WRITE_EXTERNAL_STORAGE 
)
} 

Überprüfen erteilter Berechtigungen

Mit dieser Methode können Sie eine oder mehrere Berechtigungen in einem einfachen Funktionsaufruf überprüfen.

 //  Einzelberechtigung 
 val  bool  =  Entschuldigung  .doWeHavePermissionFor ( this  android .  Manifest .  Erlaubnis .  KAMERA 

)

 //  Sie können auch fragen, ob das System mehrere Berechtigungen hat (kann mehr als zwei sein). 
 val  bool  =  ExcuseMe  .doWeHavePermissionFor ( dies 
,
     android .  Manifest .  Erlaubnis .  KAMERA 
,
     android .  Manifest .  Erlaubnis .  READ_CONTACTS 

,
    ...
    ) 

Erklären Sie, warum Sie die Erlaubnis benötigen.

Sie können erklären, warum Sie diese Erlaubnis benötigen. Dies verringert die Wahrscheinlichkeit einer Ablehnung und erhöht den Android Vitals Score Ihrer App. Apps, deren Metriken höher sind, weisen eine höhere Werbemöglichkeit auf, wodurch sich ihr Ranking bei Google Play Store-Suchanfragen erhöht.

Die sanft () -Methoden erklären, warum die App die erforderliche Erlaubnis einfordert.

 ExcuseMe  .couldYouGive ( this 
). Sanft (
         " Permission Request " 
,
         " Um eine einfache Verbindung mit Familie und Freunden herzustellen, erlauben Sie der App den Zugriff auf Ihre Kontakte. " 

    ) .permissionFor ( Berechtigung .  READ_CONTACTS ) 

Dies kann auch mit einer benutzerdefinierten Implementierung verwendet werden (ohne den von uns bereitgestellten Standarddialog zu verwenden).

 ExcuseMe  .couldYouGive ( this ). Sanft {result  - > 
 val  dialog  =  AlertDialog .  Builder  ( Builder  this  @ExampleActivity) 

        dialog.setTitle ( " Ask Permissions " 
)
        dialog.setMessage ( " Um Ihr Dokument schneller zu scannen, lassen Sie die App auf die Kamera zugreifen " 
)
        dialog.setNegativeButton ( " Nicht jetzt " ) {_, _  - >  Ergebnis ( false 
)}
        dialog.setPositiveButton ( " Continue " ) {_, _  - >  result ( true 
)}
        dialog.setOnCancelListener {result ( false )}  //  wichtig 


        dialog.show ()
    } .permissionFor ( Berechtigung .  KAMERA ) 

Auflösen, wenn der Benutzer eine Berechtigung verweigert

Sie können einen Fallback erhalten, wenn der Benutzer eine Berechtigung verweigert, indem Sie darauf bestehen und erklären, warum die Die erforderliche Berechtigung ist erforderlich, um fortzufahren. Es wird jedoch immer die Schaltfläche "Nicht jetzt" angezeigt, um den Benutzer nicht vollständig zu blockieren. Es kann auch eine benutzerdefinierte Implementierung sein, genau wie die sanft () -Methode.

Die Please () -Methode besteht darauf und zeigt eine korrekte Erklärung, wenn der Benutzer eine Berechtigung verweigert und fragt, ob der Benutzer es erneut versuchen möchte. Es kann den Benutzer auch zu den App-Einstellungen umleiten, falls der Benutzer reagiert, um die Berechtigungsanforderung nicht erneut anzuzeigen.

 ExcuseMe  .couldYouGive ( this 
). Please (
    EXPLAINAgainTitle  =  " Erlaubnis ist erforderlich " 
,
    EXPLAINAgainExplanation  =  " Die App benötigt diese Berechtigung zum Senden der automatischen SMS " 
,
    showSettingsTitle  =  " Berechtigung in Einstellungen festlegen " 
,
    showSettingsExplanation  =  " Die App öffnet die Einstellungen, um die Berechtigung von dort zu ändern. " 

) .permissionFor ( Berechtigung .  SEND_SMS ) 

Dies kann auch mit einer benutzerdefinierten Implementierung verwendet werden (ohne den von uns bereitgestellten Standarddialog zu verwenden).

 ExcuseMe  .couldYouGive ( dies ). Bitte {Typ, Ergebnis  - > 
 wenn 
 (Typ) {
         DialogType .  EXPLAIN_AGAIN  - >  { / *  * do you things *  * / 
}
         DialogType .  SHOW_SETTINGS  - >  { / *  * do you things *  * / 

}
    }}
    result.invoke ( true )  //  continue 

     //  oder 

    result.invoke ( false )  //  weiter 



} .permissionFor ( Erlaubnis .  SEND_SMS ) 

📄 Lizenz






















 MIT-Lizenz

Copyright (c) 2020 Jordan L. A. Junior

Hiermit wird jeder Person, die eine Kopie erhält, kostenlos die Erlaubnis erteilt
dieser Software und der dazugehörigen Dokumentationsdateien (die "Software") zu behandeln
in der Software ohne Einschränkung, einschließlich ohne Einschränkung der Rechte
zu verwenden, zu kopieren, zu ändern, zusammenzuführen, zu veröffentlichen, zu verteilen, Unterlizenzen zu vergeben und / oder zu verkaufen
Kopien der Software und um Personen zuzulassen, für die die Software bestimmt ist
dafür eingerichtet, unter folgenden Bedingungen:

Der oben genannte Copyright-Hinweis und dieser Erlaubnishinweis sind in allen enthalten
Kopien oder wesentliche Teile der Software.

DIE SOFTWARE WIRD "WIE BESEHEN" OHNE JEGLICHE AUSDRÜCKLICHE ODER AUSDRÜCKLICHE GEWÄHRLEISTUNG ZUR VERFÜGUNG GESTELLT
STILLSCHWEIGEND, EINSCHLIESSLICH, ABER NICHT BESCHRÄNKT AUF DIE GARANTIEN DER MARKTGÄNGIGKEIT,
EIGNUNG FÜR EINEN BESTIMMTEN ZWECK UND NICHTVERLETZUNG. In keinem Fall wird das
AUTOREN ODER COPYRIGHT-INHABER HAFTEN FÜR ANSPRÜCHE, SCHÄDEN ODER ANDERE
HAFTUNG, OB BEI VERTRAGS-, TORT- ODER ANDERWEITIGEN MASSNAHMEN AUS,
AUS ODER IM ZUSAMMENHANG MIT DER SOFTWARE ODER DER NUTZUNG ODER ANDEREN HANDELN IN DER
SOFTWARE.

.

About AndroidWeltEditor

Check Also

Testen der App-Kompatibilität in Android 11

Gepostet von Diana Wong, Produktmanagerin, Android Dieser Blog-Beitrag ist Teil einer wöchentlichen Serie für # …

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.