web-dev-qa-db-ja.com

Android Mがpermission_groupsで権限をリクエストしています

Android M Preview docs は、新しい権限モデルで権限を確認してリクエストする方法を示しています。以下のグラフでは、権限グループのグループとそれに関連する権限が示されています。

最初の起動時に_permission_group_(つまり、_Manifest.permission_group.CAMERA_)を使用してcheckSelfPermissionを実行しようとすると、予想どおり_PackageManager.PERMISSION_DENIED_が得られます。

次に、同じ_permission_group_に対してrequestPermissionsを実行しようとすると、ポップアップするダイアログのタイプが表示されません。 'onRequestPermissionsResult'は、_-1_ですぐに返されます。

_Manifest.permission.Camera_で同じシーケンスを試してみると、通常どおり動作しているようです。しかし、私が作成している単純なアプリの場合、音声付きのビデオを録画する必要があり、2つの別々の権限CAMERAMICROPHONE(別名_RECORD_AUDIO_)を要求するのは貧弱なようです設計。

質問checkSelfPermissionrequestPermissionは_Manifest.permission.*_と_Manifest.permission_group.*_で動作するはずですか?しかし、リクエストが表示されないので、ファイルする必要があるバグがありますか?それとも、これは意図的な設計でしたか?

*注-自分で複数の権限を持つrequestPermissions(String[], int)文字列配列を作成できることは理解していますが、idには、必要な権限の組み合わせを確認して要求するためのifステートメントがたくさんあります。 ishouldが_permission_group_のみを要求する必要がある場合、それらはグループとして

19
trippedout

最初の起動時にpermission_group(つまり、Manifest.permission_group.CAMERA)を使用してSelfPermissionをチェックしようとすると、予想どおりPackageManager.PERMISSION_DENIEDが取得されます。

これは、checkSelfPermission()が権限グループではなく、権限をチェックするためです。

次に、同じpermission_groupのrequestPermissionsを試してみてください。ポップアップするダイアログが表示されません。 'onRequestPermissionsResult'は-1ですぐに戻ります。

これは、requestPermissions()が権限グループではなく権限で機能するためです。

CheckSelfPermissionとrequestPermissionはManifest.permission。*で機能することになっていますか?

はい。

およびManifest.permission_group。*

番号。

それとも、これは意図的な設計でしたか?

おそらく、はい。少なくともcheckSelfPermission()では、APIレベル1にまでさかのぼり、権限グループではなく権限で機能する他の既存のメソッドの上に階層化されます。

パーミッショングループのみをリクエストする必要がある場合

Androidの将来について、正確ではない可能性があると想定しています。現在、プレMの権限グループは特に重要ではなく、権限が重要です。 Mでは、パーミッショングループの重要性が増します。これは、ユーザーが制御できるものに関してエンドユーザーへのプレゼンテーションで[〜#〜] m [〜#〜]が使用するものです。ただし、その後のバージョンのAndroidは、個々のユーザーに、またはポリシーを介して企業に、これについてより細かい粒度を提供する可能性があり、それはおそらくアクセス許可に戻ります。

APIは、Googleがそのような動きのためにドアを開いたままにしていることを示唆しています。事実上、パーミッショングループのものはUXの決定であり、技術的な決定ではありません。

24
CommonsWare