permisos - request camera permission android
No se puede resolver Manifest.permission.ACCESS_FINE_LOCATION (12)
Al agregar permisos a mi archivo de manifiesto, el siguiente xml funciona.
<permission android:name="android.permission.ACCESS_FINE_LOCATION" />
Sin embargo, este xml no funciona.
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
¿Cuál se supone que debo usar? Si es el primero, ¿por qué no funcionaría? ¿Cómo puedo arreglarlo?
Además, recibo una excepción relacionada con los permisos de tiempo de ejecución de Android 6.0:
java.lang.SecurityException: "gps" location provider requires ACCESS_FINE_LOCATION permission.
Cuando intento agregar el permiso a una matriz de cadenas para verificar el permiso, Android Studio me dice que no puede resolver el permiso
Manifest.permission
en el siguiente código:
new String[]{Manifest.permission.ACCESS_FINE_LOCATION}
¿Por qué estaría haciendo esto? ¿Cómo puedo arreglarlo?
¡Prueba esto! Dado que ACCESS_FINE_LOCATION está disponible en el siguiente paquete, agregue:
import android.Manifest;
Cambio
new String[]{Manifest.permission.ACCESS_FINE_LOCATION}
A esto
new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION}
Su problema será resuelto
Cuando escribe "Manifiesto", Android Studio debería sugerirle que elija algunas opciones de Manifiesto. Debe elegir el inicio único de Android en lugar del nombre de su proyecto.
Si accede a la referencia de Manifest.java y puede encontrar que solo hay 1-2 líneas en la clase "Permiso", entonces está haciendo referencia a la clase de manifiesto incorrecta.
Para la primera parte, debe usar
<uses-permission>
usuario
<uses-permission>
según el sitio de Android Devlopers
.
Intente asegurarse de declarar sus permisos
directamente
bajo la etiqueta
<manifest>
, no en su etiqueta
<application>
.
Es difícil saber cuál es su problema sin ver todo su archivo de manifiesto.
Consulte el enlace que publiqué anteriormente
para obtener más información sobre cómo declarar permisos en su manifiesto.
En lo que respecta a su problema de permisos de tiempo de ejecución:
Con permisos de uso No se puede resolver eso ...
nueva Cadena [] {Manifest.permission.ACCESS_FINE_LOCATION}
¿Por qué?
Asegúrese de estar usando
android.Manifest
lugar de
my.app.package.Manifest
.
Muchas veces, Android Studio usará el último en lugar del primero.
Entonces, su nueva línea de código se vería así:
new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION};
Editar: volví a formatear mi respuesta.
Edición 2: Tenga cuidado al importar
android.Manifest
.
Puede
causar problemas si también está importando
my.app.package.Manifest
.
Aparte de esa
import android.Manifest
es otra forma válida de resolver este problema.
Prueba esto:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && ContextCompat.checkSelfPermission(this, android.Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{android.Manifest.permission.READ_EXTERNAL_STORAGE}, REQUEST_SELECT_PICTURE);
return;
}
Pruebe esto antes de ejecutar, asegúrese de tener permiso para acceder.
try {
location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
} catch (SecurityException e) {
dialogGPS(this.getContext()); // lets the user know there is a problem with the gps
}
Si ya tiene la configuración de uses.permissions correctamente en su archivo de manifiesto, como ya lo mencionó hnilsen, simplemente reemplace su línea:
Manifest.permission.ACCESS_FINE_LOCATION
por este:
android.Manifest.permission.ACCESS_FINE_LOCATION
Esto puede resolver tu problema.
Tuve un problema similar donde lo usé;
ContextCompat.checkSelfPermission(MainActivity.this,Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED
donde no pudo resolver el símbolo
READ_CONTACTS
.
Sin embargo en el uso;
import android.Manifest;
Comenzó a reconocer
READ_CONTACT
cambia esto
Manifest.permission.ACCESS_FINE_LOCATION
dentro de esto
android.Manifest.permission.ACCESS_FINE_LOCATION
si está trabajando en permisos dinámicos y cualquier permiso como ACCESS_FINE_LOCATION, ACCESS_COARSE_LOCATION que da el error "no puede resolver el método PERMISSION_NAME", en este caso escriba su código con el nombre del permiso y luego reconstruya su proyecto, esto regenerará el archivo de manifiesto (Manifest.permission)
new String[]{Manifest.permission.ACCESS_FINE_LOCATION}
cámbielo a
android.manifest.permission.ACCESS_FINE_LOCATION
if (Build.VERSION.SDK_INT >= 23) {
if (checkSelfPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED
|| checkSelfPermission(android.Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
mapView.setMyLocationEnabled(true);
}
}
else
{
mapView.setMyLocationEnabled(true);
}