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.
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"/>
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);
}
}
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.