Les problèmes d'autorisation pour l'emplacement dans android Guimauve application

Je suis en train d'apprendre à développer une application android pour obtenir l'emplacement de l'appareil suivant les développeurs de Google forum: @http://developer.android.com/training/location/retrieve-current.html#last-known
@http://developer.android.com/training/location/receive-location-updates.html

L'exemple montre comment utiliser Google PLay Services à cette fin.
Mais le getLastLocation() fonction retourne toujours null.

Emplacement =
LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);

Car au départ, l'emplacement peut être nulle, j'ai ajouté les lignes suivantes à recevoir régulièrement de l'emplacement des mises à jour

LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient,
mLocationRequest, this);

qui déclenche une Exception avec le Message suivant

Client doit avoir ACCESS_COARSE_LOCATION ou ACCESS_FINE_LOCATION
l'autorisation d'effectuer l'emplacement des opérations

J'ai déjà ajouté les autorisations dans le fichier de manifeste:

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

J'ai ouvert Google Maps pour la mise à jour de l'emplacement actuel de Google Play Services, mais le même problème persiste.
Je suis novice de développement Android, et avant de poster cette question j'ai déjà cherché beaucoup mais n'ai pas trouvé de solution de travail pour moi.
Je suis en train de tester sur Android Marshmallow appareil, le développement de l'aide Android Studio 1.3.2

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="newray.acpsa1">
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme">
        <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />

        <meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="@string/google_maps_key" />

        <activity
            android:name=".MapsActivity"
            android:label="@string/title_activity_maps">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>

</manifest>

fonction onCreate de l'Activité

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mGoogleApiClient = new GoogleApiClient.Builder(this)
                .addConnectionCallbacks(this)
                .addOnConnectionFailedListener(this)
                .addApi(LocationServices.API)
                .build();
        mGoogleApiClient.connect();
        mLocationRequest = LocationRequest.create()
                .setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY)
                .setInterval(10 * 1000)        
                .setFastestInterval(1 * 1000); 
        /* Rest functionality */
    }

onConnected fonction

@Override
    public void onConnected(Bundle bundle) {
        try{
        Location location = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);
        LatLng loc = new LatLng(21.356993, 72.826647);
        if (location == null) {
            Log.d(TAG,"location is again null");
            LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, this);
            Log.d(TAG, "Requested for updates");
        }
        else {
            loc = new LatLng(location.getLatitude(),location.getLongitude());
            handleNewLocation(location);
        }            
        } catch (Exception e) {
            Log.d(TAG, "Error in onConnected.  "+e.getMessage());

        }
    }

Journaux:

XXXX: Error in onConnected.  Client must have ACCESS_COARSE_LOCATION or ACCESS_FINE_LOCATION permission to perform any location operations.

dépendances de construction.gradle fichier:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:23.1.0'
    compile 'com.google.android.gms:play-services:8.1.0'
    compile 'com.google.android.gms:play-services-location:8.1.0'
}
developer.android.com/training/permissions/requesting.html
Merci @DanielNugent. Qui a résolu le problème pour moi

OriginalL'auteur Naveen | 2015-11-07