[JAVA] Behandeln Sie die Android-Laufzeitberechtigung in einer Zeile

Bei der Entwicklung von Android-Apps leide ich heutzutage häufig unter der Android-Laufzeitberechtigung. Laufzeit mit fügen Sie einfach eine Zeile </ font> hinzu, um diese Laufzeitberechtigung zu unterstützen Ich habe eine Bibliothek erstellt, die mit Berechtigungen umgehen kann. https://github.com/TakuKobayashi/RuntimePermissionChecker Wenn Sie möchten, möchte ich "Sterne" und "Gefällt mir" oder "Teilen" erhalten und verbreiten. M (_ _) m

Einführungsmethode

herunterladen

build.gradle (siehe Bild unten)

Den folgenden Abhängigkeiten von wurden die folgenden Inhalte hinzugefügt

build.gradle


dependencies {
    implementation 'net.taptappun.taku.kobayashi:runtimepermissionchecker:1.1.1'
}

Dadurch wird die Bibliothek in Ihr Android-Projekt eingeführt.

Implementierung

Sobald die Bibliothek installiert ist, fügen Sie sie Ihrer Aktivität hinzu, wie im folgenden Beispiel gezeigt.

MainActivity.java


public class MainActivity extends Activity {
    private static final int REQUEST_CODE = 1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        ...
        RuntimePermissionChecker.requestAllPermissions(this, REQUEST_CODE);
    }
}

Dies

RuntimePermissionChecker.requestAllPermissions(Activity activity, int requestCode);

Danach wird der Vorgang zum Bestätigen der Android-Berechtigung automatisch ausgeführt, indem an einer beliebigen Stelle hinzugefügt wird. * Der Dialog zum Bestätigen der Android-Berechtigung wird nur angezeigt. Vergessen Sie daher nicht, die Berechtigungseinstellung wie unten gezeigt zu AndroidManifest.xml hinzuzufügen. </ Font> >

AndroidManifest.xml


<uses-permission android:name="Berechtigungsname" />

Ich möchte die Berechtigung einzeln anstatt auf einmal angeben

MainActivity.java


public class MainActivity extends Activity {
    private static final int REQUEST_CODE = 1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        ...
        RuntimePermissionChecker.requestPermission(this, REQUEST_CODE, Manifest.permission.CAMERA);
    }
}

Dies

RuntimePermissionChecker.requestPermission(Activity activity, int requestCode, String requestPermission);

Durch Hinzufügen zu einer beliebigen Stelle wird der Vorgang zum Bestätigen der angegebenen Berechtigung ausgeführt, indem der Berechtigungsname, den Sie einzeln hören möchten, im obigen dritten Argument (String requestPermission) angegeben wird. (In diesem Fall wird der Bestätigungsbildschirm für die Kameraberechtigung angezeigt.)

Ergänzung

Ich möchte die Verarbeitung ausführen, wenn alle Berechtigungen zulässig sind

In diesem Fall [onRequestPermissionsResult](https://developer.android.com/reference/android/app/Activity.html#onRequestPermissionsResult(int, java.lang.String [], int [])), wie im folgenden Beispiel gezeigt. Lässt den Prozess ausführen, wenn der Rückruf von aufgerufen wird.

MainActivity.java


public class MainActivity extends Activity {
    private static final int REQUEST_CODE = 1;

    @Override
    public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
        if (requestCode != REQUEST_CODE)
            return;
        if(!RuntimePermissionChecker.existConfirmPermissions(this)){
            // write features you want to execute.
        }
    }
}

Dies

RuntimePermissionChecker.existConfirmPermissions(Activity activity);

Wird </ font> sein, wenn noch Berechtigungen zum Anhören vorhanden sind.

Ich möchte prüfen, ob eine Einzelberechtigung zulässig ist

Wenn Sie überprüfen möchten, ob eine einzelne Berechtigung zulässig ist, anstatt wenn alle Berechtigungen oben zulässig sind

RuntimePermissionChecker.hasSelfPermission(Activity activity, String requestPermission);

Sie können dies mit dieser Methode überprüfen. Berechtigungsname, den Sie im zweiten Argument dieser Methode einzeln überprüfen möchten Wenn Sie angeben und es bereits zulässig ist, ist es </ font>.

Was ist, wenn Android 6.0 Marshmallow (API Level 23) oder niedriger?

Die obige Verarbeitung schließt auch die Korrespondenz in diesem Fall ein.

Was ist, wenn der Benutzer bereits eine Berechtigung erteilt hat?

Die obige Verarbeitung schließt auch die Korrespondenz in diesem Fall ein.

Was ist eigentlich die Laufzeiterlaubnis?

Ab Android 6.0 Marshmallow (API Level 23) müssen Sie beim Ausführen der App die Erlaubnis eines Benutzers anfordern, eine bestimmte Funktion zu verwenden, und Sie können die Funktion nicht ohne die Erlaubnis dieses Benutzers verwenden. .. (Speichern von Informationen auf einer Kamera, einem Mikrofon, einer SD-Karte usw.) Kurz gesagt, es ist ein Dialog wie dieser. 68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f33343438382f32303466316232632d623732362d363466612d346235662d3639343333386565613136372e706e67.png Um diesen Dialog anzuzeigen, muss der Prozess natürlich auf der Anwendungsseite geschrieben werden. Weitere Details finden Sie hier

Als eine Person, die viele Android-Apps entwickelt und seit der Zeit der Android 2-Serie Android-Apps entwickelt, möchte ich nicht über die Implementierung dieser Laufzeitberechtigung nachdenken. Als maximale Konzession habe ich es also geschafft, nur eine Zeile hinzuzufügen. Ich wollte. Daher egal welche App du machst

  • Legen Sie diese Bibliothek vorerst ein
  • Rufen Sie diese Methode vorerst auf

Also habe ich versucht, etwas daraus zu machen, das alles lösen würde.

  • Für die erste Veröffentlichung der Android-Bibliothek dieses Mal haben wir unten auf verschiedene Artikel verwiesen.

Referenz


Nachtrag 13.12.2017 (Mi) Ich konnte mich für Bintray registrieren. Ich konnte mich auch bei jcenter registrieren und habe daher die Installationsmethode für die Bibliothek aktualisiert.