2017-03-03 5 views
0

アンドロイドでACCESS_FINE_LOCATIONとACCESS_COARSE_LOCATIONの権限を取得したいのですが、何らかの理由でACCESS_COARSE_LOCATIONの権限しか与えられません。アンドロイドでACCESS_FINE_LOCATION権限を取得できません

マイアクティビティ:

final int PERMISSION_ALL = 1; 
String[] PERMISSIONS = {ACCESS_FINE_LOCATION,ACCESS_COARSE_LOCATION}; 

if(!hasPermissions(this, PERMISSIONS)){ 
     System.out.println("=========================================nottttt========================================================"); 
     ActivityCompat.requestPermissions(this, PERMISSIONS, PERMISSION_ALL); 
    } 



@Override 
public void onRequestPermissionsResult(int requestCode, String PERMISSIONS[], int[] grantResults) { 
    System.out.println("==================requesttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt"); 

    switch (requestCode) { 
     case PERMISSION_ALL: { 
      System.out.println("lengthhhhhhhhhhhhhhhhhhhhhh"+PERMISSIONS.length); 
      for (int i = 0; i < PERMISSIONS.length; i++) { 
       String permission = PERMISSIONS[i]; 
       if (grantResults[i] == PackageManager.PERMISSION_GRANTED) { 
        System.out.println(permission + "is alreadyyyyyyyyyyyyy grantedddddddddddddddd"); 
       } else { 
        System.out.println(permission + "is not grantedddddddddddddddd"); 

       } 
       return; 
      } 

     } 
    } 
} 


public static boolean hasPermissions(Context context, String[] permissions) { 
    if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && context != null && permissions != null) { 
     for (String permission : permissions) { 
      if (ActivityCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED) { 
       return false; 
      } 
     } 
    } 
    return true; 
} 

Androidのマニフェスト:私はアプリを起動

<user-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
<user-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 

、私は場所へのアクセスを与えるように求めています、私は[はい]を選択しますが、ACCESS_FINE_LOCATIONはgranted.Canではありません誰かが私が問題を見つけるのを助ける?

+0

突然、細かい場所が許可されています。誰にもこの奇妙な動作が発生した理由を知っていますか? –

答えて

0

ユーザーがこれらのアクセス許可の1つにアクセス許可を与えると、そのアクセス許可がユーザーに付与されます。あなたはそれらのうちの1つを許可し、もう1つを許可することはできません。

+0

しかし、なぜonRequestPermissionResultからの印刷では、許可されていないACCES_FINE_LOCATION権限が見つかりました。 –

+0

付与する前に付与されているかどうかを確認することはできますか? – Ruben2112

+0

私はそうではないと思う。なぜなら、私は画面のタッチのたびにコンソールから印刷物をチェックし、ii許可後にonyの許可を受けない –

0

ACCESS_FINE_LOCATION許可アプリはGPSとネットワークの場所のプロバイダを使用することができます。しかし、ネットワークプロバイダは粗い場所のプロバイダです。あなたがACCESS_FINE_LOCATIONを最初にリクエストすると、自動的にACCESS_COARSE_LOCATIONのアクセス権が要求されます。

関連する問題