0
롤리팝 장치 (에뮬레이터가 아닌)에서 GPS 위치를 켜 봅니다. 실시간 권한 코드를 작성했지만 올바르게 작동하지 않습니다. 이것은 내 소스입니다.롤리팝 또는 위 버전에서 위치를 켜고 현재 위치를 얻는 방법
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (ActivityCompat.checkSelfPermission(this, permissions[0]) == PackageManager.PERMISSION_GRANTED) {
askForGPS();
Toast.makeText(this, "Permission granted", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "Permission denied", Toast.LENGTH_SHORT).show();
}
}
private void askForGPS(){
mLocationRequest = LocationRequest.create();
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
mLocationRequest.setInterval(30 * 1000);
mLocationRequest.setFastestInterval(5 * 1000);
LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder().addLocationRequest(mLocationRequest);
builder.setAlwaysShow(true);
result = LocationServices.SettingsApi.checkLocationSettings(client, builder.build());
result.setResultCallback(new ResultCallback<LocationSettingsResult>() {
@Override
public void onResult(LocationSettingsResult result) {
final Status status = result.getStatus();
switch (status.getStatusCode()) {
case LocationSettingsStatusCodes.SUCCESS:
break;
case LocationSettingsStatusCodes.RESOLUTION_REQUIRED:
try {
status.startResolutionForResult(MainActivity.this, GPS_SETTINGS);
} catch (IntentSender.SendIntentException e) {
e.printStackTrace();
}
break;
case LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE:
break;
}
}
});
}
private void askForPermission(String permission, Integer requestCode) {
if (ContextCompat.checkSelfPermission(MainActivity.this, permission) != PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this, permission)) {
ActivityCompat.requestPermissions(MainActivity.this, new String[]{permission}, requestCode);
} else {
ActivityCompat.requestPermissions(MainActivity.this, new String[]{permission}, requestCode);
}
} else {
Toast.makeText(this, "" + permission + " is already granted.", Toast.LENGTH_SHORT).show();
}
}
버튼을 클릭 할 때 나는 이와 같은 허가를 요청하려고합니다.
askForPermission(Manifest.permission.ACCESS_FINE_LOCATION,LOCATION);
난 내 응용 프로그램을 실행하면, 난에 AlertDialog를 표시 할 수 없습니다 및 모르지만이 토스트 메시지를 보여주는 프로그램이 위치 .I를 켤 수 없습니다 "이미 부여됩니다." 내 askForPermission 메서드가 올바르게 작동하지 않습니다. 내 질문은 실시간 권한으로 GPS를 켜고 현재 위치를 가져 오는 방법입니다.
public void getCurrenctLocation(Location location)
{
Log.e("Current lang", location.getLatitude()+"");
Log.e("Current long", location.getLongitude()+"");
}
어떻게 그리고 어디에서 getCurrenctLocation 메서드를 사용할 수 있습니까?
이private void askForPermission(String permission, Integer requestCode) {
if (ContextCompat.checkSelfPermission(MainActivity.this, permission) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(MainActivity.this, new String[]{permission}, requestCode);
} else {
askForGPS();
}
}
2) 아래와 같이 onRequePermissionResult()
수정 : 내가 getCurrenctLocation 방법을 사용할 수 있습니다 괜찮나
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode) {
case LOCATION: //You have to declare LOCATION globally. example: private int LOCATION = 1 ;
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// Permission Granted
askForGPS();
Toast.makeText(this, "Permission granted", Toast.LENGTH_SHORT).show();
}
else {
if (ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this, permissions[0])) {
Toast.makeText(this, "Permission denied", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "Permission denied permanently, please go to app settings to grant permission.", Toast.LENGTH_SHORT).show();
}
}
break;
}
}
감사합니다 귀하의 관심은 GPS 후 현재 위치를 확인하기 위해 는 – BekaKK
getLastLocation/location change listener – tahsinRupam
을 사용하여 위치를 가져올 수있는 권한 문제가 해결 되었습니까? 작동하는 경우 허용되는 것으로 표시 할 수 있습니다. – tahsinRupam