Recabamos por distintos espacios y así de esta manera traerte la respuesta a tu problema, si continúas con alguna duda deja la inquietud y te contestaremos con mucho gusto, porque estamos para ayudarte.
Solución:
deberías tener solo una cadena array si desea solicitar todos los permisos en un cuadro de diálogo, así:
int ALL_PERMISSIONS = 101;
final String[] permissions = new String[]Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE;
ActivityCompat.requestPermissions(this, permissions, ALL_PERMISSIONS);
¿Por qué desea solicitar permisos varias veces? El método de solicitud de permiso acepta array de Permisos. Para solicitar cualquier permiso, puede usar el siguiente código y agregar los permisos que necesita. Así es como maneja los permisos de tiempo de ejecución al solicitarlos antes de acceder a cualquier dato relacionado con el permiso
public boolean isStoragePermissionGranted()
if (Build.VERSION.SDK_INT >= 23)
if (checkSelfPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE)
== PackageManager.PERMISSION_GRANTED && checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE)
== PackageManager.PERMISSION_GRANTED && checkSelfPermission(Manifest.permission.CAMERA)
== PackageManager.PERMISSION_GRANTED)
Log.v(TAG,"Permission is granted");
return true;
else
Log.v(TAG,"Permission is revoked");
ActivityCompat.requestPermissions(this, new String[]Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.CAMERA, 1);
return false;
else //permission is automatically granted on sdk<23 upon installation
Log.v(TAG,"Permission is granted");
return true;
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults)
switch (requestCode)
case 0:
boolean isPerpermissionForAllGranted = false;
if (grantResults.length > 0 && permissions.length==grantResults.length)
for (int i = 0; i < permissions.length; i++)
if (grantResults[i] == PackageManager.PERMISSION_GRANTED)
isPerpermissionForAllGranted=true;
else
isPerpermissionForAllGranted=false;
Log.e("value", "Permission Granted, Now you can use local drive .");
else
isPerpermissionForAllGranted=true;
Log.e("value", "Permission Denied, You cannot use local drive .");
if(isPerpermissionForAllGranted)
shoro();
break;
Una vez que haga eso, para dispositivos con API> = 23, obtendrá una ventana emergente en tiempo de ejecución y luego, una vez que el usuario acepte el permiso o lo rechace, su onRequestPermissionsResult
se llama el método. así que aquí tendrá que manejar su verificación si el usuario otorgó el permiso a la aplicación. Si es así, puedes continuar con tu lógica.