2016-11-14 1 views
0

인터넷없이 위치를 확인하고 나는 아래의 코드를 만들 수 있지만,이 코드나는 인터넷을 사용하지 않고 안드로이드 현재 위치를 얻으려고

<?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> 
에게 AndroidManifest.xml에서

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

} 

} 

TextView의 값을 표시하지 않습니다

TextView에 위도와 경도 값이 표시되는 이유가 무엇인지 알 수 없었습니까?

+0

에뮬레이터 또는 실제 장치에서 테스트 중이십니까? –

+0

* 그러나 textview에 어떤 값도 표시하지 않습니다 * ... 이것은 정의에 의해이 코드가 수행하는 것과 정확히 일치합니다. 권한이 없습니다 ... – Selvin

답변

1

targetSdkVersion>22 인 경우 & 요청 위치 업데이트를 onRequestPermissionsResult에서 요청하십시오.

런타임 권한의 경우 Here을 클릭하십시오!

위치 서비스가 기기 설정에서 사용 설정되어있는 경우에만 코드가 작동합니다. 위치 서비스 상태를 확인하거나 사용하도록 요청하지 않으므로

FusedLocationProviderApi을 사용해보세요. 의도를 사용할 필요가없는 경우 Here을 확인하십시오!

관련 문제