es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Por qué mi aplicación no solicita ni permite los permisos de ubicación?

Llevo un tiempo atascado con este problema. Estoy tratando de hacer que mi aplicación solicite 2 permisos a la vez, como se muestra a continuación:

ibTakePicture.setOnClickListener(new View.OnClickListener() {
    // Esto obtiene la imagen y la ubicación y luego muestra ambos
    @Override
    public void onClick(View v) {
        ActivityCompat.requestPermissions(
            HomePageActivity.this,
            new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.CAMERA},
            REQUEST_CODE_MULTIPLE_PERMISSION
        );
    }
});

La idea es que cuando se hace clic en el botón, se solicite al usuario los permisos de ubicación y cámara, para poder almacenar la ubicación y la foto en algún lugar. Las funciones de la cámara funcionan bien, pero todavía tengo problemas para obtener la ubicación. Aquí está mi método onRequestPermissionsResult:

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);

    if (grantResults.length > 0) {
        if (grantResults[0] == PackageManager.PERMISSION_GRANTED){
            getCurrentLocation();
            dispatchTakePictureIntent();
        } else {
            Toast.makeText(
                HomePageActivity.this,
                "Se deben otorgar los permisos de ubicación y cámara para que esta aplicación funcione.",
                Toast.LENGTH_LONG
            ).show();
        }
    }
}

Estoy bastante seguro de que es solo un problema con estos métodos, cualquier ayuda sería enormemente apreciada.

He probado otras formas, como en mi pregunta anterior https://stackoverflow.com/questions/70602255/java-android-requesting-multiple-permissions-but-one-doesnt-get-requested/70602540#70602540

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que el método onRequestPermissionsResult solo está verificando el resultado del primer permiso (Manifest.permission.ACCESS_FINE_LOCATION) y no el segundo permiso (Manifest.permission.CAMERA). Asegúrate de agregar una verificación para el segundo permiso también:

    if (grantResults[0] == PackageManager.PERMISSION_GRANTED && grantResults[1] == PackageManager.PERMISSION_GRANTED) {
        getCurrentLocation();
        dispatchTakePictureIntent();
    } else {
        Toast.makeText(
            HomePageActivity.this,
            "Se deben conceder los permisos de ubicación y cámara para que esta aplicación funcione.",
            Toast.LENGTH_LONG
        ).show();
    }
    

    Además, asegúrate de que los permisos necesarios estén declarados en el archivo manifiesto de la aplicación:

    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
    <uses-permission android:name="android.permission.CAMERA"></uses-permission>
    

    Si aún tienes problemas para obtener la ubicación, asegúrate de verificar que los servicios de ubicación estén habilitados en el dispositivo y que la aplicación haya sido concedida los permisos de ubicación necesarios. También puedes intentar usar un proveedor de ubicación diferente (por ejemplo, LocationManager.NETWORK_PROVIDER) para ver si eso soluciona el problema.

Comments are closed.