2016-11-14 3 views
0

Я пытаюсь получить андроид текущего местоположения без использования интернета и создать код, ниже, но не отображают значения в TextViewПолучить место без интернета

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) { 

} 

} 

В AndroidManifest.xml этого кода

<?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> 

Я не знал, почему есть значение для отображения широты и долготы в TextView?

+0

Вы тестируете эмулятор или настоящее устройство? –

+0

* но не отображает значения в текстовом виде * ... это именно то, что делает этот код, поскольку по определению у вас нет разрешений ... – Selvin

ответ

1

Если ваш targetSdkVersion является >22, попробуйте запросить разрешение на запуск & уточните местонахождение объявления от onRequestPermissionsResult.

Для получения разрешения на использование нажмите Here!

Также ваш код будет работать, только если службы определения местоположения включены в настройках устройства. Поскольку вы не проверяете статус служб местоположения и не запрашиваете его.

Попробуйте использовать FusedLocationProviderApi, вам не обязательно использовать намерение, проверьте Here!

Смежные вопросы