2016-04-28 13 views
0

[OK]を、私はASに次のコードとの警告を持っている: enter image description hereAndroid Studioの追加権限の確認のバグ?

私は次のコードの挿入のように、このようなチェックを追加することに同意:

if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && 
       ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 
      // TODO: Consider calling 
      // ActivityCompat#requestPermissions 
      // here to request the missing permissions, and then overriding 
      // public void onRequestPermissionsResult(int requestCode, String[] permissions, 
      //           int[] grantResults) 
      // to handle the case where the user grants the permission. See the documentation 
      // for ActivityCompat#requestPermissions for more details. 
      return TODO; 
     } 

そして、私はただ思ったんだけど、なぜAND演算子は使用していますか?
ユーザーが上記のアクセス許可の1つのみを拒否した場合、そのようなチェックは機能しません。

それとも私が何かを欠場?

答えて

1

さまざまな方法で場所を取得できます。 GPSからLocationManager.GPS_PROVIDERを使用し、ネットワークからLocationManager.NETWORK_PROVIDERLocationManager.PASSIVE_PROVIDER(GPS)を使用して取得します。

permission.ACCESS_FINE_LOCATIONGPS_PROVIDERおよびPASSIVE_PROVIDERに必要です。

docによるとNETWORK_PROVIDER

のために必要とされている:

注:NETWORK_PROVIDERとGPS_PROVIDERの両方を使用している場合は、あなただけACCESS_FINE_LOCATION許可を要求する必要が 、それは許可を含み ので、両方のプロバイダのために。 ( ACCESS_COARSE_LOCATIONの許可はNETWORK_PROVIDERの許可が含まれています。)

あなたは両方を使用しているのであれば、おそらくAndroidのメーカーはそれが両方

+0

いいえ、Android Studioによって許可チェックが追加されていますか?そのような場合には、ANDの代わりにOR演算子が必要です。 –

1

のために安全でチェックを果たしているように、あなたはこれらの両方をチェックする必要がいけない、チェックしません。パーミッション。細かい場所のアクセスのみが拒否されても、もう一方のアクセスは自動的に拒否され、その逆もあります。 Botheが同じグループに入っています - 場所 http://developer.android.com/guide/topics/security/permissions.html#normal-dangerous

関連する問題