2017-03-15 106 views
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而無法打開的位置。我不知道,但表示該吐司消息程序「已經理所當然的。」 我的askForPermission方法不能正常工作。我的問題是,我如何打開具有實時權限的GPS並獲取當前位置?

public void getCurrenctLocation(Location location) 
{ 
    Log.e("Current lang", location.getLatitude()+""); 
    Log.e("Current long", location.getLongitude()+""); 
} 

如何以及在哪裏可以使用我的getCurrenctLocation方法? 感謝

回答

0

1)修改askForPermission()這樣的:

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()象下面這樣:

@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

感謝您的關注。如何,我可以使用getCurrenctLocation方法GPS後,檢查當前位置已打開? @tahsinRupam – BekaKK

+0

您可以使用getLastLocation /位置更改偵聽器獲取位置 – tahsinRupam

+0

是否已修復權限問題?如果它起作用,您可以將其標記爲已接受 – tahsinRupam