[JAVA] Android-Berechtigungsanfrage (Plural)

Android Runtime Permission Request

Vor langer Zeit habe ich in Android System Permission geschrieben, wie man Berechtigungen einzeln über den Einstellungsbildschirm zulässt, aber der Dialog wird in der App angezeigt. Ich habe es lange verlassen, um herauszufinden, wie. Ich habe es ausgecheckt, also werde ich es wieder schreiben.

Diese Erlaubnis

Verwenden Sie dieses Mal die folgende Berechtigung, um die in der Vergangenheit erstellte Aufzeichnungsanwendung zu verwenden.

AndroidManifest.xml


<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.VIBRATE"/>

Code

Der Ablauf besteht darin, dass das Dialogfeld "Berechtigung" in der MainActivity angezeigt und zugelassen wird. Nach Abschluss wird der Übergang zur startRecordingActivity ausgeführt und die Aufzeichnung gestartet.

MainActivity.java


package com.example.testrecordingpermission;

import android.content.Intent;
import android.content.pm.PackageManager;
import android.Manifest;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    private final int REQUEST_CODE = 1000;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Android 6,Überprüfen Sie die Berechtigungen mit API 23 oder höher
        if(Build.VERSION.SDK_INT >= 23) {
            String[] permissions = {
                    Manifest.permission.WRITE_EXTERNAL_STORAGE,
                    Manifest.permission.RECORD_AUDIO,
                    Manifest.permission.VIBRATE
            };
            checkPermission(permissions, REQUEST_CODE);
        }

        startRecordingActivity();
    }

    //Bestätigung der Standortinformationsberechtigung
    public void checkPermission(final String[] permissions,final int request_code){
        //Im Dialogfeld werden nur diejenigen angezeigt, die nicht zulässig sind
        ActivityCompat.requestPermissions(this, permissions, request_code);
    }

    //Rückruf von requestPermissions
    @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        switch(requestCode) {

            case REQUEST_CODE:
                for(int i = 0; i < permissions.length; i++ ){
                    if (grantResults[i] == PackageManager.PERMISSION_GRANTED) {
                        Toast toast = Toast.makeText(this,
                                "Added Permission: " + permissions[i], Toast.LENGTH_SHORT);
                        toast.show();
                    } else {
                        Toast toast = Toast.makeText(this,
                                "Rejected Permission: " + permissions[i], Toast.LENGTH_SHORT);
                        toast.show();
                    }
                }
                break;
            default:
                break;
        }
    }

    //StartRecording mit Absicht
    private void startRecordingActivity() {
        Intent intent = new Intent(getApplication(), RecordingActivity.class);
        startActivity(intent);
    }
}

Ergebnis

Für die VIBRATE-Berechtigung ist keine Berechtigung erforderlich, daher werden die Dialogfelder WRITE_EXTERNAL_STRAGE und RECORD_AUDIO angezeigt. Erfolg.

      

Die Dialoganzeige / Berechtigung war erfolgreich, wurde jedoch beim Start der App nicht angezeigt und erst nach dem Schließen der App. Ich möchte wirklich, dass es sofort nach dem Start der App angezeigt wird. Erneut überprüfen.

Recommended Posts

Android-Berechtigungsanfrage (Plural)
Android Memo-I war süchtig nach Erlaubnis