Android M solicitud de permiso no actividad
Mi widget hace llamadas para proteger los permisos fuera de un ámbito de Activity
. ¿Es posible solicitar permisos para Android M fuera de una Activity
?
- Error en la versión 6.0 de Android 6.0: EACCES (Permiso denegado)
- ¿Cómo inhabilitar una aplicación del modo Doze?
- ¿Cuánto tiempo tarda para que android pase al modo doze?
- Android 6 Marshmallow: las solicitudes de algunos permisos específicos se deniegan al instante sin mostrar ningún ui
- Problema de permiso de Android 6 (M) (el directorio de creación no funciona)
- WRITE_SETTINGS Ambigüedad del permiso
- ImageWriter alternativa para android 19-22?
- Método FloatMath.sqrt () no encontrado
- ConnectivityManager.requestNetwork en Android 6.0
- Android Marshmallow ART "No se pudo encontrar el offset nativo para dex" crash
- Android M - comprobar el permiso de ejecución - cómo determinar si el usuario marcó "Nunca preguntar de nuevo"?
- Apache conexión HTTP con Android 6.0 (Marshmallow)
- ¿Cómo prueban los desarrolladores comunes isPermissionRevokedByPolicy ()?
Si desea solicitar el permiso de fuera de la actividad, puede crear una clase diferente y extender la clase de Actividad. Utilice constructor para obtener y establecer Context para 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 el objeto crear y pase el contexto al constructor dondequiera que usted necesite pedir permisos.
Permissions permissions = new Permissions(SplashScreen.this); permissions.checkWriteExternalStoragePermission();
Creo que es posible solicitar un permiso fuera de una actividad, siempre y cuando utilice el método
ActivityCompat.requestPermissions (Activity activity, String [] permisos, int requestCode)
Desde la biblioteca de soporte y pasar 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 [] permisos, int [] grantResults)
Ése es el método que manejará el resultado de la petición del permiso.
No, no es posible. Lo que puedes hacer es enviar una notificación donde el usuario puede tocar y luego usar una actividad para solicitar / administrar el permiso (quizás con el tema de diálogo).
Sólo puede solicitar permiso de Actividad o de fragmento.
Determina un punto de tu Actividad o Fragmento en el que pienses que App necesitará un permiso, luego llama al método requestPermission. La notificación de envío no funcionará porque quieres procesar el código hasta que obtengas los permisos solicitados y, a continuación, reanuda tu funcionalidad desde el método onRequestPermissionResult ().
Es posible llamar a requestPermissions () desde fuera de tu actividad, pero en tu clase deberías tener el contexto de esa actividad.
ActivityCompat.requestPermissions((Activity)context, new String[]{permission.READ_PHONE_STATE}, REQUEST_CODE);
Para trabajar, debe implementar el siguiente método en su actividad
onRequestPermissionsResult (int requestCode, String[] permissions, int[] grantResults)
Para que este método de anulación se ejecute cuando el usuario pulse en el botón de permitir o denegar en el pop-up
- Cambiar el carácter de máscara de la contraseña de EditText a asterisco (*)
- Android classificar los resultados de la consulta sqlite ignorando el caso