AndroidManifest.xml 퍼미션 설정
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
LocationManager를 이용하여 현재 위치정보 가져오기
locationManager = (LocationManager) this.getSystemService(LOCATION_SERVICE);
locationListener = new LocationListener() {
@Override
public void onLocationChanged(@NonNull Location location) {
Log.i("myLocation", "위도 : " + location.getLatitude());
Log.i("myLocation", "경도 : " + location.getLongitude());
}
};
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(MainActivity.this,
new String[]{ Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_COARSE_LOCATION }, 100);
return;
}
// 3초 지날 때마다, LocationManager 실행
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 3000, -1, locationListener);
• 현재 사용하려고 하는 권한이 설정되어 있는지 체크 => checkSelfPermission 이용
- 리턴값이 PERMISSION_DENIED 인 경우 사용자가 권한을 설정할 수 있도록 메시지를 표시=> requestPermissions
- 리턴값이 PERMISSION_GRANTED 인 경우, LocationManager 실행
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == 100) {
if (ActivityCompat.checkSelfPermission(MainActivity.this,
Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED &&
ActivityCompat.checkSelfPermission(MainActivity.this,
Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(MainActivity.this,
new String[]{ Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_COARSE_LOCATION }, 100);
return;
}
// 3초 지날 때마다, LocationManager 실행
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 3000, -1, locationListener);
}
}
checkSelfPermission : 퍼미션의 현재 상태를 확인하는 메소드
- requestPermissions : 권한이 체크되어 있지 않은 경우 (PERMISSION_DENIED) 권한을 요청하는 메시지 표시
- onRequestPermissionsResult : requestPermissions 의 결과로 호출되는 메소드
PERMISSION_DENIED | 퍼미션이 부여되지 않은 상태 |
PERMISSION_GRANTED | 퍼미션이 부여되어 있는 상태 |
'안드로이드 스튜디오' 카테고리의 다른 글
[ 안드로이드 ] 구글맵 서비스를 위한 설정 방법 (0) | 2022.07.29 |
---|---|
[ 안드로이드 ] Retrofit으로 파일 업로드 하기 (0) | 2022.07.26 |
[ 안드로이드 ] 카메라 / 앨범 사용법 (0) | 2022.07.21 |
[ 안드로이드 ] 이미지 처리를 위한 Glide 라이브러리 사용법 (2) | 2022.07.20 |
[ 안드로이드 ] ActionBar menu 사용법 (0) | 2022.07.19 |