2016-04-07 14 views
0

Android Marshmellowの新しい権限ダイアログで権限を要求される順番を選択する方法はありますか?Android M権限ダイアログ - ユーザに表示される注文を選択してください

ユーザーは私が求めるよ、私のアプリでカメラを起動します:

  • Manifest.permission.CAMERA
  • Manifest.permission.WRITE_EXTERNAL_STORAGE
  • Manifest.permission.RECORD_AUDIO

これは最も理にかなっているため(カメラが開いているなど、アプリケーションがカメラのアクセス権を要求しているため)、その順番でアクセス許可を要求します。しかし、彼らはそのように要求されていません - Permissionsダイアログは、String配列の順序を無視しているようです。

EasyPermissions libraryを使用してコードを作成しますが、EasyPermissionsライブラリがないと同じことが起こります。

ArrayList<String> permissionsToRequest = new ArrayList<String>(); 
permissionsToRequest.add(Manifest.permission.CAMERA); 
permissionsToRequest.add(Manifest.permission.WRITE_EXTERNAL_STORAGE); 
permissionsToRequest.add(Manifest.permission.RECORD_AUDIO); 

EasyPermissions.requestPermissions(
      this, 
      "To take pictures & record video, we need access to your device's camera & storage. Allow?", 
      R.string.acceptPermission, R.string.declinePermission, 
      RequestConstants.REQUEST_CAMERA_PERMISSIONS, 
      permissionsToRequest.toArray(new String[0]) 
    ); 

かかわらず、私はpermissionsToRequestでアクセス許可を注文する方法の、ユーザーが私の意見では少なくとも直感的な順序で同じ順序(オーディオ、ストレージ、カメラ)で求められます。これを修正する方法はありますか?

+0

まあ、ユーザーに表示されるアクセス許可に関するすべてのことは文書化されておらず、変更される可能性があります。今、それはウィザードのことです。私はいつかそれがいつも異なっていることを見ることができます、特にタブレットでは、より多くの画面スペースがあります。私は、注文を強制するための文書化された方法があることを認識していないし、文書化されていない方法があるとしても、その長期的な価値には本当に期待することはできません。 – CommonsWare

+0

したがって、権限を注文する方法はありませんか? – jonney

答えて

1

権限の順序を明確に定義する方法はありませんが、AndroidManifest.xmlで定義されている順序と、Activity.requestPermissions(String []アクセス許可)で渡された配列に何とか関係があることがわかりました。 String requestCode)

デバイスでは、許可配列の順序は画面に表示された順序になります。別のデバイスでは、マニフェストで定義された順序が優先されます。

これが役に立ちます。

関連する問題