Il y a longtemps, j'ai écrit comment autoriser l'autorisation individuellement à partir de l'écran de configuration dans Android System Permission, mais la boîte de dialogue s'affiche dans l'application. Je l'ai laissé longtemps à essayer de savoir comment. Je l'ai vérifié, je vais donc l'écrire à nouveau.
Cette fois, pour utiliser l'application d'enregistrement créée dans le passé, utilisez l'autorisation suivante.
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"/>
Le flux est que la boîte de dialogue Permission est affichée et autorisée dans MainActivity, et lorsqu'elle est terminée, la transition vers startRecordingActivity est effectuée et l'enregistrement est démarré.
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,Vérifiez les autorisations avec l'API 23 ou supérieure
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();
}
//Confirmation de l'autorisation des informations de localisation
public void checkPermission(final String[] permissions,final int request_code){
//Seuls ceux qui ne sont pas autorisés seront affichés dans la boîte de dialogue
ActivityCompat.requestPermissions(this, permissions, request_code);
}
//requestPermissions rappel
@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;
}
}
//Démarrer l'enregistrement avec l'intention
private void startRecordingActivity() {
Intent intent = new Intent(getApplication(), RecordingActivity.class);
startActivity(intent);
}
}
L'autorisation VIBRATE ne nécessite pas d'autorisation, donc les boîtes de dialogue WRITE_EXTERNAL_STRAGE et RECORD_AUDIO s'affichent. Succès.
L'affichage / l'autorisation de la boîte de dialogue a réussi, mais il n'a pas été affiché au démarrage de l'application, et il n'a été affiché qu'après la fermeture de l'application. Je souhaite vraiment qu'il s'affiche immédiatement après le lancement de l'application. Revérifier.