2017-05-28 110 views
0

前段時間,我通過一些來自互聯網的教程向我的應用程序添加了關於「精細位置」的權限。一切工作就像我想要的,但我有問題約1不明原因線:授予Android權限 - 未知值

private static final int MY_PERMISSION_REQUEST_FINE_LOCATION = 101; 

爲什麼有值101?爲什麼不是102或200?


private static final int MY_PERMISSION_REQUEST_FINE_LOCATION = 101; 

public void onMapReady(GoogleMap googleMap) { 
     mMap = googleMap; 

     if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) 
       != PackageManager.PERMISSION_GRANTED && 
       ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) 
         != PackageManager.PERMISSION_GRANTED) { 
      if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
       requestPermissions(new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION}, 
         MY_PERMISSION_REQUEST_FINE_LOCATION); 

      } else { 

      } 
      return; 
     } 

public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { 
    super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
    switch (requestCode) { 
     case MY_PERMISSION_REQUEST_FINE_LOCATION: 
      if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { 


       if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) 
         != PackageManager.PERMISSION_GRANTED && 
         ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) 
           != PackageManager.PERMISSION_GRANTED) { 

        return; 
       } 
       LatLng position = new LatLng(0, 0); 


      } else { 

       close(); 
      } 

    } 

} 

回答

0

你可以給它的價值,你want.It的值得做的工作onRequestPermissionResult趕requestCode

+0

值得一提的是,活動中的每個'requestPermissions()'調用都應該得到一個不同的'int'值。 –

+0

但是在我的代碼中我再也沒有提到101 – androidmanifest

+0

讓我看看你的代碼 – Ekrem

0

requestPermissions()的文檔,它說,requestCode

應用(int,String [],int [])的結果相匹配的特定請求代碼與 報告的結果相匹配。應該是> = 0.

這是什麼意思是你將顯式地指定這個代碼給你想要的任何值,然後你可以使用這個值來檢查你的請求是否成功在回調中onRequestPermissionsResult。一個例子,把這段代碼在你的活動:

@Override 
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { 
    switch (requestCode) { 
     case 101: 
      if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
       //granted 
      } else { 
       //not granted 
      } 
      break; 
     default: 
      super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
    } 
} 

所以回到你的問題,你可以使用102或200,或任何價值,你想。但是您應該始終檢查請求是否成功,方法是使用您在requestPermissions方法中提供的相同代碼。