¿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
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:Además, asegúrate de que los permisos necesarios estén declarados en el archivo manifiesto de la aplicación:
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.