2017-05-28 80 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方法中提供的相同代码。