2016-11-14 3 views
0

Ich versuche android aktuellen Standort zu erhalten, ohne Internet mit und ich den Code in unten aber einen beliebigen Wert nichtHolen Sie sich das Ort ohne Internet

package com.example.ahmed.gbs_location; 

import android.Manifest; 
import android.content.Context; 
import android.content.pm.PackageManager; 
import android.location.Location; 
import android.location.LocationListener; 
import android.location.LocationManager; 
import android.os.Bundle; 
import android.support.v4.app.ActivityCompat; 
import android.support.v7.app.AppCompatActivity; 
import android.widget.TextView; 
import android.widget.Toast; 

public class MainActivity extends AppCompatActivity implements LocationListener { 
TextView latitude; 
TextView longitude; 

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

    latitude = (TextView) findViewById(R.id.tb1); 
    longitude = (TextView) findViewById(R.id.tb2); 
    LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 

    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 
     Toast.makeText(MainActivity.this, "Ahmed", Toast.LENGTH_SHORT).show(); 
     return; 
    } 
    else 
    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this); 
} 

@Override 
public void onLocationChanged(Location location) { 
    latitude.setText(String.valueOf(d)); 
    longitude.setText(String.valueOf(location.getLongitude())); 
    latitude.setText(String.valueOf((location.getLatitude()))); 
} 

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

} 

@Override 
public void onProviderEnabled(String provider) { 

} 

@Override 
public void onProviderDisabled(String provider) { 

} 

} 

In AndroidManifest.xml diesem Code

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="com.example.ahmed.gbs_location"> 
<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:supportsRtl="true" 
    android:theme="@style/AppTheme"> 
    <activity android:name=".MainActivity"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 
in TextView anzuzeigen

Ich wusste nicht, warum gibt es einen Wert für die Breiten- und Längengradanzeige in TextView?

+0

Testen Sie auf einem Emulator oder einem echten Gerät? –

+0

* zeigt aber keinen Wert in textview * ... das ist genau das, was dieser Code macht, da per Definition keine Berechtigungen vorhanden sind ... – Selvin

Antwort

1

Wenn targetSdkVersion>22 ist, versuchen Sie, die Laufzeitberechtigung & anzufordern, um die Standortaktualisierung von onRequestPermissionsResult anzufordern.

Klicken Sie zur Laufzeitberechtigung auf Here!

Ihr Code funktioniert auch nur, wenn die Standortdienste in den Geräteeinstellungen aktiviert sind. Da Sie den Status der Standortdienste weder überprüfen noch die Aktivierung anfordern.

Versuchen Sie mit FusedLocationProviderApi Sie müssen keine Absicht verwenden, überprüfen Sie Here!

Verwandte Themen