varios ubicacion studio shouldshowrequestpermissionrationale seguridad programacion permisos permiso pedir onrequestpermissionsresult multiples example android android-6.0-marshmallow

ubicacion - seguridad y permisos en android studio



Android M solicitar permiso no actividad (6)

Mi widget realiza llamadas para asegurar permisos fuera de un ámbito de Activity . ¿Es posible solicitar permisos para Android M fuera de una Activity ?


Creo que es posible solicitar un permiso fuera de una actividad, siempre y cuando uses el método.

ActivityCompat.requestPermissions (actividad de actividad, permisos String [], int requestCode)

desde la biblioteca de soporte y pase la Actividad como un parámetro del método.

Por ejemplo:

ActivityCompat.requestPermissions(targetActivity, new String[] {Manifest.permission.CAMERA}, PERMISSION_REQUEST_CODE);

donde targetActivity es la Actividad que debe implementar el método:

onRequestPermissionsResult (int requestCode, String [] permissions, int [] grantResults)

Ese es el método que manejará el resultado de la solicitud de permiso.


Es posible llamar a requestPermissions () desde fuera de su actividad, pero en su clase debe tener el contexto de esa actividad.

ActivityCompat.requestPermissions((Activity)context, new String[]{permission.READ_PHONE_STATE}, REQUEST_CODE);

Para poder trabajar, debes implementar el siguiente método en tu actividad.

onRequestPermissionsResult (int requestCode, String[] permissions, int[] grantResults)

Para que este método de anulación se ejecute cuando el usuario toque el botón permitir o denegar en el menú emergente


No, no es posible. Lo que puede hacer es enviar una notificación donde el usuario puede tocar y luego usar una actividad para solicitar / administrar el permiso (tal vez con un tema de diálogo).


Podrías usar la biblioteca de permisos fáciles .

Android requiere que estas solicitudes provengan de una Activity . Con Easy Permissions esto ya no es un problema, puede solicitar permiso desde cualquier lugar siempre que proporcione Context . Además, si solicita un permiso que ya ha sido otorgado, no se le solicitará al usuario.

La divulgación completa, nuestra empresa gestiona y desarrolla esta biblioteca de uso gratuito. Dicho esto, confiamos en que es una herramienta útil y no la compartiríamos de otro modo.


Si desea solicitar el permiso fuera de la actividad, puede crear una clase diferente y extender la clase desde Actividad. Use el constructor para obtener y establecer el contexto de la clase.

public class Permissions extends Activity { private static final int MY_PERMISSIONS_WRITE_EXTERNAL_STORAGE = 1; private Context context; public Permissions(Context context) { this.context = context; } public void checkWriteExternalStoragePermission() { final int MY_PERMISSIONS_REQUEST_PHONE_CALL = 1; ContextCompat.checkSelfPermission(context, Manifest.permission.WRITE_EXTERNAL_STORAGE); if (ContextCompat.checkSelfPermission(context, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions((Activity) context, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, MY_PERMISSIONS_WRITE_EXTERNAL_STORAGE); } } @Override public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) { switch (requestCode) { case MY_PERMISSIONS_WRITE_EXTERNAL_STORAGE: { if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { Toast.makeText(context, "Permission Granted", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(context, "Permission Denied", Toast.LENGTH_SHORT).show(); } return; } // other ''case'' lines to check for other // permissions this app might request } } }

Ahora, cree crear objeto y pase el contexto al constructor donde sea que necesite solicitar permisos.

Permissions permissions = new Permissions(SplashScreen.this); permissions.checkWriteExternalStoragePermission();


Solo puedes solicitar permiso ya sea de Activity o de fragment.

Determine un punto en su Actividad o Fragmento en el que cree que la aplicación requerirá un permiso, luego llame al método requestPermission. el envío de la notificación no funcionará porque desea que el procesamiento de su código sea hasta que obtenga los permisos solicitados y luego reanude su funcionalidad desde el método onRequestPermissionResult ().