web-dev-qa-db-fra.com

Ni l'utilisateur ni le processus actuel n'ont Android.permission.ACCESS_COARSE_LOCATION

Je sais que cela peut être une question stupide et j'ai déjà renvoyé toutes les questions similaires, mais malheureusement, j'ai pu résoudre ce problème. Il s'agit très probablement d'un problème dans mon fichier Manifest.xml.

Lorsque j'essaie d'accéder à l'emplacement, l'application se bloque

voici mon manifest.xml

<?xml version="1.0" encoding="utf-8"?>
 <manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
package="com.test.tt.test" >

<application
    Android:allowBackup="true"
    Android:icon="@drawable/ic_launcher"
    Android:label="@string/app_name"
    Android:theme="@style/AppTheme" >
    <activity
        Android:name=".sTest"
        Android:label="@string/app_name" >
        <intent-filter>
            <action Android:name="Android.intent.action.MAIN" />

            <category Android:name="Android.intent.category.LAUNCHER" />
        </intent-filter>


    </activity>
    <service Android:name="com.test.tt.test.sService">
    <intent-filter>
        <action Android:name="Android.intent.action.MAIN" />

        <category Android:name="Android.intent.category.LAUNCHER" />
    </intent-filter> </service>
    <service Android:name="com.test.tt.test.sServiceRequest" />

    <uses-permission Android:name="Android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission Android:name="Android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission Android:name="Android.permission.ACCESS_COARSE_UPDATES" />
    <uses-permission Android:name="Android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission Android:name="Android.permission.ACCESS_WIFI_STATE" />


</application>

quand je le lance jette cette erreur

 Java.lang.SecurityException: Neither user 11029 nor current process has Android.permission.ACCESS_COARSE_LOCATION.

Similaire avec d'autres autorisations. Je ne vois aucune erreur dans mon fichier manifeste. Aide appréciée

14
user3290805

Cela signifie que vous avez des informations erronées ou des informations mal formées dans votre fichier de manifeste et c'est la raison pour laquelle aucune de vos autorisations n'est identifiée par votre application. Assurez-vous simplement que vous avez nettoyé le fichier ANDROIDMANIFEST avec des données mal formées.

Cela fonctionnera et toutes les autorisations doivent être en dehors de la balise Application

12
JNI_OnLoad

Si vous utilisez un appareil sur Android Marshmallow et supérieur:

Si l'appareil fonctionne Android 6.0 ou supérieur et si le SDK cible de l'application est 23 ou supérieur, l'application doit non seulement répertorier les autorisations dans le manifeste, mais doit également demander chaque autorisation dangereuse dont elle a besoin pendant que l'application est en cours d'exécution.

Plus d'informations:

http://developer.Android.com/training/permissions/requesting.html

et

http://developer.Android.com/guide/topics/security/permissions.html#normal-dangerous

14
sivag1

déplacer l'application en dehors des autorisations d'utilisation juste en dessous de la balise manifest

3
adev

La section des autorisations de déplacement a résolu mon problème avec "Ni l'utilisateur ni le processus actuel n'ont Android.permission.READ_PHONE_STATE". Merci beaucoup à tout le monde dans ce forum. En référence à d'autres, mes changements sont ci-dessous:

Original:

    <uses-permission Android:name="Android.permission.NFC" />
    <uses-permission Android:name="Android.permission.READ_PHONE_STATE" />


    <uses-feature
        Android:name="Android.hardware.nfc"
        Android:required="true" />

    <activity Android:name=".NfcRead"></activity>
</application>

Modifier:

    <uses-permission Android:name="Android.permission.NFC" />

    <uses-feature
        Android:name="Android.hardware.nfc"
        Android:required="true" />

    <activity Android:name=".NfcRead"></activity>
</application>

<uses-permission Android:name="Android.permission.READ_PHONE_STATE" />
3
user6175333

Cette exception est liée au système d'autorisation d'exécution dans Android 6 et supérieur. L'autorisation de localisation est soumise à une autorisation dangereuse [ cochez ici ], vous devez donc avoir à remplir ci-dessous 2 exigences minimales pour gérer ces autorisations:

  1. Déclaration inférieure à 2 autorisations dans le manifeste (ces autorisations doivent être en dehors de la balise d'application)

    <uses-permission Android:name="Android.permission.ACCESS_COARSE_LOCATION" />  
    <uses-permission Android:name="Android.permission.ACCESS_FINE_LOCATION " />
    
  2. Vérifiez l'autorisation accordée au moment de l'exécution à l'aide de checkSelfPermission () et demandez des autorisations à l'aide de requestPermissions () s'il n'est pas déjà accordé.

Si vous avez déjà fait les deux ci-dessus et que vous obtenez toujours une erreur, vérifiez ci-dessous:

  1. Votre application targetSdkVersion (devrait être> = 23) [Si le targetSdkVersion de l'application est défini sur moins de 23. On supposera que l'application n'est pas testée avec nouveau système d'autorisations pour le moment et passera au même vieux comportement: l'utilisateur doit accepter chaque autorisation au moment de l'installation et elles seront toutes accordées une fois installées].
  2. Vérifiez si vous avez un problème avec votre fichier manifeste. Vous avez peut-être mal formé le fichier manifeste.
  3. Vérifiez si vous appelez une fonction qui fonctionne sur les données de localisation, avant que la boîte de dialogue de l'utilisateur accepte/révoque la permission de localisation du runtime?
  4. Nettoyez votre application (Clean build) et réexécutez.

J'espère que cela peut vous aider :-)

0
Akki