2016-08-10 6 views
0

Ich möchte die Position meines Telefons zurück zu bekommen, aber ich habe ein Problem mit dieser Zeile:Berechtigungsfehler mit Hilfe von GPS

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,10000,0,(LocationListener) this); 

ich das Problem kennen, ist die Berechtigungsprüfung, aber ich weiß nicht, dies zu tun in meinem Code:

package com.cmn.cmnvtc; 

import android.app.Fragment; 
import android.content.Context; 
import android.location.Location; 
import android.location.LocationListener; 
import android.location.LocationManager; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.Toast; 

import com.google.android.gms.maps.CameraUpdateFactory; 
import com.google.android.gms.maps.GoogleMap; 
import com.google.android.gms.maps.MapFragment; 
import com.google.android.gms.maps.OnMapReadyCallback; 
import com.google.android.gms.maps.model.LatLng; 
import com.google.android.gms.maps.model.MarkerOptions; 


public class MainPageFragment1 extends Fragment implements OnMapReadyCallback, LocationListener { 


    LocationManager locationManager; 
    public LatLng myLocation; 



    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View v = inflater.inflate(R.layout.fragment_main1, container, false); 


     locationManager = (LocationManager) getActivity().getSystemService(Context.LOCATION_SERVICE); 
     locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,10000,0,(LocationListener) this); 
     return v; 
    } 

    @Override 
    public void onViewCreated(View view, Bundle savedInstanceState) { 
     super.onViewCreated(view, savedInstanceState); 

     MapFragment fragment = (MapFragment) getChildFragmentManager().findFragmentById(R.id.map); 
     fragment.getMapAsync(this); 

    } 

    @Override 
    public void onMapReady(GoogleMap googleMap) { 
     LatLng marker = new LatLng(48.9818555, 2.270541); 
     googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(marker, 15)); 
     googleMap.addMarker(new MarkerOptions().title("Le garage").position(marker)); 
     googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL); 

    } 

    @Override 
    public void onLocationChanged(Location location) { 
     if(location != null){ 
      Toast.makeText(getActivity(), "Latitude:" + location.getLatitude() + " - Longitude:" + location.getLongitude(), Toast.LENGTH_SHORT); 
     } 
    } 

    @Override 
    public void onStatusChanged(String provider, int status, Bundle extras) { 

    } 

    @Override 
    public void onProviderEnabled(String provider) { 

    } 

    @Override 
    public void onProviderDisabled(String provider) { 

    } 
} 

Wie kann ich das bitte tun?

Mein Fehler im Code: "Add Berechtigungsprüfung"

Antwort

1

Sie müssen es überprüfen Marshmollow

private static final int GRANTED = PackageManager.PERMISSION_GRANTED; 

if (checkCoarseLocationPermission(getActivity()) && checkFineLocationPermission(getActivity())) { 
     //permissions are granted 
    }else { 
     requestLocationPermission(getActivity()); 
    } 
} 

public boolean checkCoarseLocationPermission(Activity mActivity){ 
    int permissionCheck = ContextCompat.checkSelfPermission(mActivity, 
      Manifest.permission.ACCESS_COARSE_LOCATION); 
    return permissionCheck == GRANTED; 
} 

public boolean checkFineLocationPermission(Activity mActivity){ 
    int permissionCheck = ContextCompat.checkSelfPermission(mActivity, 
      Manifest.permission.ACCESS_FINE_LOCATION); 
    return permissionCheck == GRANTED; 
} 

public void requestLocationPermission(Activity mActivity){ 
    ActivityCompat.requestPermissions(mActivity, 
      new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION}, 
      MY_PERMISSIONS_REQUEST_LOCATION); 
} 
+0

In Methoden checkCoarseLocationPermission, checkFineLocationPermission und requestLocationPermission, die IDE nicht finden Berechtigungen ACCESS_FINE_LOCATION und ACCESS_COARSE_LOCATION und MY_PERMISSIONS_REQUEST_LOCATION – Shadow956

+0

Sie android.Manifest und nicht Ihr Paket lokale Manifest –

+0

MY_PERMISSIONS_REQUEST_LOCATION existiert nicht – Shadow956

0

versuchen diese public void OnLocationChanged (Lage, Lage) { if (location! = Null) { location = Location .getLastKnownLocation (LocationManager.GPS_PROVIDER); Toast.makeText (getActivity(), "Breitengrad:" + location.getLatitude() + "- Längengrad:" + location.getLongitude(), Toast.LENGTH_SHORT); } }

+0

habe ich eine neue gleiche Fehlermeldung über eine Erlaubnis Überprüfung – Shadow956

0

Sie müssen die Berechtigungen im Manifest Ihrer App hinzufügen. Öffnen Sie Ihre manifest.xml und setzen diese zwei Linien:

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

ACCESS_FINE_LOCATION ermöglicht die App die Benutzerposition zu verfolgen den aktuellen GPS. ACCESS_COARSE_LOCATION ermöglicht Ihrer App, die Benutzerposition mithilfe von WiFi-Netzwerken zu verfolgen. Sie können diese also weglassen, wenn Sie nur das GPS verwenden.

+0

ich es tat, aber es funktioniert nicht, gibt es das gleiche Problem – Shadow956

+0

Können Sie die Post Fehler, den Sie bekommen? – Aurasphere

+0

Es ist in dem Code: "Berechtigungsprüfung hinzufügen" – Shadow956