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; 
    } 
} 

답변

0

1

) 수정이처럼 askForPermission() 감사합니다 켜져? @ tahsinRupam
+0

감사합니다 귀하의 관심은 GPS 후 현재 위치를 확인하기 위해 는 – BekaKK

+0

getLastLocation/location change listener – tahsinRupam

+0

을 사용하여 위치를 가져올 수있는 권한 문제가 해결 되었습니까? 작동하는 경우 허용되는 것으로 표시 할 수 있습니다. – tahsinRupam