2016-10-17 1 views
0

ist mit Android Studio 2.2.1, Benutzer sdk bekommen - min = "18"max = "24"
verwendet ZulassungsAndroid - Kann nicht die GPS-Position im realen Gerät

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

Fehler - Aufruf erfordert die Erlaubnis, die rej werden können Benutzer ektiert von
Fehlerzeile

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2000, 1, this); 

meines vollen Code erklärt hier. Danke

import android.location.Location; 
import android.location.LocationListener; 
import android.location.LocationManager; 
import android.os.Bundle; 
import android.provider.Settings; 
import android.app.Activity; 
import android.content.Context; 
import android.content.Intent; 
import android.view.Menu; 
import android.view.View; 
import android.widget.EditText; 
import android.widget.Toast; 

public class MainActivity extends Activity implements LocationListener { 

    private LocationManager locationManager; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R. layout.activity_main); 
     locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 

     locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2000, 1, this); 
    } 

    @Override 

    public void onLocationChanged(Location location) { 
     String msg = "New Latitude: " + location.getLatitude() 
       + "New Longitude: " + location.getLongitude(); 

     Toast.makeText(getBaseContext(), msg, Toast.LENGTH_LONG).show(); 

    } 

    @Override 
    public void onStatusChanged(String s, int i, Bundle bundle) { 
     Toast.makeText(getBaseContext(), "Gps is STATUS CHANGED!! ", 
       Toast.LENGTH_SHORT).show(); 

    } 

    @Override 
    public void onProviderEnabled(String s) { 
     Toast.makeText(getBaseContext(), "Gps is turned on!! ", 
       Toast.LENGTH_SHORT).show(); 

    } 

    @Override 
    public void onProviderDisabled(String s) { 
     Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); 
     startActivity(intent); 
     Toast.makeText(getBaseContext(), "Gps is turned off!! ", 
       Toast.LENGTH_SHORT).show(); 

    } 
} 
+1

Von Android 6.0 Sie Ihre Berechtigungen zur Laufzeit verlangen haben , nicht wenn die App installiert ist. Lesen Sie mehr dazu auf Android-Entwickler https://developer.android.com/training/permissions/requesting.html –

Antwort

0

Verwenden NETWORK_PROVIDER Lage zu bekommen, weil viele Male GPS null

m_locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,0,0, this); 
    m_location = m_locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); 

geben wird unter Berechtigungen in manifest

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> 
+0

bin hinzufügen diese zwei Änderungen noch nicht ändern jetzt zeigt zwei Zeilenfehler – basil

+0

locationManager.requestLocationUpdates (LocationManager.GPS_PROVIDER, 2000, 1 , Dies); locationManager.getLastKnownLocation (LocationManager.NETWORK_PROVIDER); – basil

0

Sie hinzufügen Laufzeit Erlaubnis für Android Eibisch zur Verfügung stellen müssen .

Amtsführung: Click here

Zusätzliche Hilfe: Click here

Hier einige Codierung Führer.

In Ihrer onCreate Methode:

if (ActivityCompat.checkSelfPermission(getApplicationContext(), android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 

    ActivityCompat.requestPermissions(SplashActivity.this, new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION}, 1); 

} else{ 
    // getLocationfromYourDevice(); 
} 

diesen Code hinzufügen Auch das Ergebnis der Erteilung/Ablehnung die Erlaubnis zu erhalten.

@Override 
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) { 

    switch (requestCode) { 
     case 1: 
      if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
       Toast.makeText(this,"GPS permission granted",Toast.LENGTH_LONG).show(); 

      // getLocationfromYourDevice(); 

      } else { 

       // Close the app or disable the location function 

      } 
      break; 
    } 
} 
0

In Ihrer Tätigkeit

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
     if (permissionsMashmellow.hasPermissions(PERMISSIONS)) { 

       GPSTracker gps = new GPSTracker(AlarmActivity.this); 
       if (gps.canGetLocation()) { 
        String latitude = gps.getLatitude(); 
        String longitude = gps.getLongitude(); 
       } 
      } else { 
       permissionsMashmellow.requestPermissions(PERMISSIONS, PERMISSION_ALL); 
      } 
} 

@Override 
    public void onRequestPermissionsResult(int requestCode, 
              String permissions[], int[] grantResults) { 
     if (grantResults.length > 0 
        && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 

       // permission was granted, yay! Do the 

       GPSTracker gps = new GPSTracker(AlarmActivity.this); 
       if (gps.canGetLocation()) { 
        String latitude = gps.getLatitude(); 
        String longitude = gps.getLongitude(); 
       } 

      } else { 

       // permission denied, boo! Disable the 
       // functionality that depends on this permission. 
      } 
    } 

unten Code hinzufügen, um die Erlaubnis anfordert

public boolean hasPermissions(String... permissions) { 
    if(VERSION.SDK_INT >= 23 && this.mContext != null && permissions != null) { 
     String[] var2 = permissions; 
     int var3 = permissions.length; 

     for(int var4 = 0; var4 < var3; ++var4) { 
      String permission = var2[var4]; 
      if(ActivityCompat.checkSelfPermission(this.mContext, permission) != 0) { 
       return false; 
      } 
     } 
    } 

    return true; 
} 

public void requestPermissions(String[] PERMISSIONS, int PERMISSION_ALL) { 
    ActivityCompat.requestPermissions((Activity)this.mContext, PERMISSIONS, PERMISSION_ALL); 
} 

GpsTracker.class für aktuellen loc bekommen

Verwandte Themen