前書き
Hello こんにちは。
忙しい人のためにandroidMのパーミッション回りを書きます。
まとめからスタートします。より詳しく知りたかったらそれより↓を読んでください。
まとめ
今までのパーミッションではユーザーから見た時いつどこで「その権限」が使われてるのかわからず不安だった。(それゆえに悪用もできた)
Mからはそれはよくないよね、という流れになった。(OSとしては当たり前)
デベロッパーは権限を使う前(度)にユーザーに「このパーミッション使っていいですか?」「このパーミッションは許可されていますか」と聞くことが義務となった。
ユーザーはより透明化されたパーミッションをアプリ一覧から確認して機能毎に許可不許可できるようになった。
今までのパーミッション
AndroidManifest.xmlにを書き込むことでアプリで使える権限を増やしていた。つまりユーザー目線に立ったとき
アプリを入れたい → このアプリはインターネット権限を使うのか → やめよう
といったフローでアプリの取捨選択を行っていた。
デベロッパーは余計な権限を極力使わないことでユーザーに安心感を与えていた。
しかし、これは逆もしかりで、ユーザーがよくわからないことをいいことに悪用することもできた、ということです。よくないですよね。
では今後(M以降)は?
デベロッパー
デベロッパーは二つの動作をすることができます。
- 権限の要求
「のパーミッションが欲しいけどいい?」といったダイアログを出す。
public int requestPermissions(String[] permissions, int requestCode);
permissionが配列になっているのはpermissionをまとめてリクエストできるからです。(※ただし、一つのパーミッションにつき一つのダイアログが出てきます。ダイアログは現在customDialogは使えません。ちょっと不便。)
requestCodeは任意です。制御に使え、という意図でしょう。
戻り値に関しては
- 許可 (PERMISSION_GRANTED)
- 不許可(PERMISSION_DENIED)
です。
- 権限の確認
「上のアプリ一覧で設定されたパーミッションには許可されてる?」といった問い合わせ。
public int checkSelfPermission(String permission);
戻り値に関しては上と一緒です。
リザルト
requestPermissionメソッドを呼び出すと、が帰ってきます。オーバーライドしてそこで結果を受け取ります。
ユーザー
ユーザーはアプリ一覧から権限を確認することができます。
例えば、アプリ全体からを許可しているアプリは何か。また、このアプリは何のパーミッションを許可しているか、といった具合に。
まとめ2
まだAndroidMのシェア率は0.6%です
今後増えていくだろうし、私たちも準備していきましょう。