Android 6.0 Marshmallow
App Permissions 実践編
2015/09/11
神原 健一(@korodroid)
2
自己紹介
l 神原 健一 (@korodroid)
l モバイル関連活動
l 国内外での講演活動
•Droidcon Stockholm 2014
•Droidcon Spain 2014
•Droidcon Amsterdam 2013
•Droidcon Paris 2013
•Smartphone & Tablet 2014 Spring Tokyo
•Developers Summit 2015
l 書籍執筆
•ブログ「Mobile Dev Blog」
•NTTソフトウェア(株)所属
3
Android 6.0 Marshmallow
現時点
• App Permissions(アプリパーミッション)
• Fingerprint Authentication(指紋認証)
• Multi Window(マルチウィンドウ)
• Direct Share(ダイレクト共有)
• Auto Backup for Apps(アプリバックアップ)   
Android 6.0 Marshmallow(抜粋)
• Cloud Test Lab
• Now on Tap
• Data Binding
• Android Design Support Library
【その他のトピック】
4
4
5
Android 6.0 Marshmallow
App Permissions 基礎編
6
App Permissions(アプリパーミッション)
• アプリが利用する特殊アクセスを

ユーザが制御できる機能。
• 1度許可しても後で変更も可能。
• アプリ開発者の考慮要。

7
App Permissionsのコード例
// 連絡帳アクセスのパーミッションリクエスト
if (checkSelfPermission(Manifest.permission.READ_CONTACTS)
!= PackageManager.PERMISSION_GRANTED) {
requestPermissions(new String[]{Manifest.permission.READ_CONTACTS},
MY_PERMISSIONS_REQUEST_READ_CONTACTS);
}
// パーミッション取得結果のコールバック
@Override
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
switch (requestCode) {
case MY_PERMISSIONS_REQUEST_READ_CONTACTS: {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
}
}
}
}
8
App Permissions(許可取得の流れ)
• 一般アプリの場合
• アプリのインストール
PROTECTION_NORMAL
まで許可(バイブ鳴動等)
• アプリの起動
• 必要なとき、機能リクエスト
• 同機能を利用可能に
• requestPermissions呼び出し
  (連絡先へのアクセス等)
• ユーザへの許可依頼
  →許可された場合
9
App Permissionsの許可取得時の振る舞い
■パーミッション状態管理ファイル
/data/system/users/{ユーザID}/runtime-permissions.xml

<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
<runtime-permissions …>
<!— 中略 —>
<pkg name="org.iplatform.android.apppermissionsample">
<item name="android.permission.READ_CONTACTS" granted="true" flags="0" />
</pkg>
</runtime-permissions>
10
• 右アプリで上から順に利用すると
• 電話帳アクセス(Read)
ユーザからの許可取得:必要
• 電話帳アクセス(Write)
• カメラ機能
App Permissions(グループの考え方)
ユーザからの許可取得:不要

(同一グループの許可取得済のため)
ユーザからの許可取得:必要
11
パーミッショングループとパーミッションの関係
パーミッショングループ パーミッション
android.permission-­‐group.CALENDAR
android.permission.READ_CALENDAR
android.permission.WRITE_CALENDAR
android.permission-­‐group.CAMERA android.permission.CAMERA
android.permission-­‐group.CONTACTS
android.permission.READ_CONTACTS
android.permission.WRITE_CONTACTS
android.permission.GET_ACCOUNTS
android.permission-­‐group.LOCATION
android.permission.ACCESS_FINE_LOCATION
android.permission.ACCESS_COARSE_LOCATION
パーミッショングループとパーミッション例(抜粋)

12
パーミッショングループと設定
パーミッショングループ
android.permission-­‐group.SMS
android.permission-­‐group.CAMERA
android.permission-­‐group.CALENDAR
android.permission-­‐group.STORAGE
android.permission-­‐group.SENSORS
android.permission-­‐group.MICROPHONE
android.permission-­‐group.LOCATION
android.permission-­‐group.CONTACTS
android.permission-­‐group.PHONE
13
• 電話帳+カメラ機能利用
requestPermissions(new String[]{
Manifest.permission.READ_CONTACTS,
Manifest.permission.CAMERA},
MULTIPLE_REQUEST);
• 電話帳(Read)リクエスト
複数パーミッションのリクエスト
ユーザ選択結果のコールバック
onRequestPermissionsResult(

int requestCode,
String permissions[],

int[] grantResults)
• カメラ機能リクエスト
今回は仮に「許可」
今回は仮に「許可しない」
14
Android 6.0 Marshmallow
App Permissions 実践編
15
アプリのAndroid 6.0対応実施
■セカイフォン(リアルタイム翻訳電話)
http://www.iplatform.org/blog/sekai-phone
16
Android 6.0対応の注意点(パーミッション観点)
ポイント①
納得してもらえるパーミッション?
ポイント②
バージョン毎の振る舞い
ポイント③
パーミッションの許可依頼タイミング
ポイント④
ユーザ操作内容による影響
17
ポイント①納得してもらえるパーミッション?
そもそもパーミッションの使い方は適切?!
18
ポイント①納得してもらえるパーミッション?
必要ならユーザに理解してもらえるように説明
ref.) shouldShowRequestPermissionRational
19
ポイント②バージョン毎の振る舞い
端末OS ver.<6.0 端末OS ver.>=6.0
targetSdkVersion<23 旧パーミッションの振る舞い
新旧パーミッションの振る舞い
・インストール時点:許可確認有
・特殊機能利用前(初回):許可要求不要
・パーミッション変更:可能
targetSdkVersion>=23 旧パーミッションの振る舞い
新パーミッションの振る舞い	
  
・インストール時点:許可確認無	
  
・特殊機能利用前(初回):許可要求必須
・パーミッション変更:可能
※Android 6.0 MのAPIレベル=23
• 端末OS ver.<6.0→下位互換性考慮(Support Library v23)
• 端末OS ver.>=6.0→新バーミッションの実装必須
20
ポイント③パーミッションの許可依頼タイミング
取得タイミング 特徴 補足
(A)初回起動時
全てのパーミッションを起動時
(チュートリアル後等)に取得
・数が多いと、ユーザ操作が面倒
・対応工数は、小
(B)該当機能の利用直前 該当機能を利用する直前に取得
・ユーザに理解してもらい易いが、
ばらばら確認するとユーザは面倒	
  
・対応工数は、中
(C)(A)+(B)の併用
頻繁に利用される機能(メイン
機能)は(A)で、まれに使う機能
(オプション機能)は(B)
・バランスが取れた方式	
  
・対応工数は、大
どれを採用すべきかは、アプリの内容次第(特殊機能の内容や数)
21
ポイント④ユーザ操作内容による影響
パーミッション付与リクエスト
→不許可 or 許可
設定からのパーミッション変更
→あとで変更される可能性
22
おわり
•Facebook:http://fb.com/kanbara.kenichi
•Google+:+Kenichi Kambara
•LinkedIn:http://www.linkedin.com/in/korodroid
•Twitter:@korodroid
ご清聴ありがとうございました。
(執筆、講演依頼などのお話がございましたら、

ご連絡をお願い致します。)

More Related Content

PDF
Android 6.0 Marshmallow 指紋認証対応のポイント
PDF
[Stack Overflow Dev Days 2015]Android 6.0 Marshmallow App Permissions 応用編
PPTX
Android Mのruntime-permissionに潜む罠
PDF
Realm meetup LT大会(Androidアプリへの適用経験談)
PDF
Android6.0 RuntimePermissionの実装と注意点
PDF
パーミッションモデルの過渡期への対応
PPTX
20150909 日本androidの会9月定例講演資料
PDF
Marshmallowで変更になったpermission
Android 6.0 Marshmallow 指紋認証対応のポイント
[Stack Overflow Dev Days 2015]Android 6.0 Marshmallow App Permissions 応用編
Android Mのruntime-permissionに潜む罠
Realm meetup LT大会(Androidアプリへの適用経験談)
Android6.0 RuntimePermissionの実装と注意点
パーミッションモデルの過渡期への対応
20150909 日本androidの会9月定例講演資料
Marshmallowで変更になったpermission

What's hot (20)

PPTX
これからの「パーミッション」の話をしよう
PDF
AndroidアプリのUI/UX改善例
PPTX
Android6.0新しいパーミッションモデルへの対応_DevFest Kyoto LT
PDF
What is tested by pre-launch (security) reports?
PDF
Android lint-srp-practice
PDF
DroidKaigi2016 windows環境での効率的なアプリ開発手法
PDF
AndroidLint #DroidKaigi
PDF
Androidアプリのストレージ戦略
PPTX
[ABC2016S]Android Wear アプリ開発入門
PDF
Androidのセキュア開発について考えてみた(明日、敗訴しないためのセキュアコーディング.ver2)
PDF
Android Dev Tools Knowledge
PDF
はてなにおける Android アプリのソフトウェアテスト
PDF
2015年のAndroidアプリ開発入門 - ABCD 2015 Kanazawa
PDF
Android Wear How to make watchface project abc2014W
PDF
インフラジスティックス Wpf コントロールを用いたリッチ アプリケーション開発
PDF
[potatotips #18] Android M Developer Preview & Wear 最新トピック
PDF
Meta1のSLAM機能を試してみた
PDF
Alternative WebView
PDF
はじめる前に知っておきたいAndroidアプリ開発のポイント
PDF
Android Wearと戦ってみた
これからの「パーミッション」の話をしよう
AndroidアプリのUI/UX改善例
Android6.0新しいパーミッションモデルへの対応_DevFest Kyoto LT
What is tested by pre-launch (security) reports?
Android lint-srp-practice
DroidKaigi2016 windows環境での効率的なアプリ開発手法
AndroidLint #DroidKaigi
Androidアプリのストレージ戦略
[ABC2016S]Android Wear アプリ開発入門
Androidのセキュア開発について考えてみた(明日、敗訴しないためのセキュアコーディング.ver2)
Android Dev Tools Knowledge
はてなにおける Android アプリのソフトウェアテスト
2015年のAndroidアプリ開発入門 - ABCD 2015 Kanazawa
Android Wear How to make watchface project abc2014W
インフラジスティックス Wpf コントロールを用いたリッチ アプリケーション開発
[potatotips #18] Android M Developer Preview & Wear 最新トピック
Meta1のSLAM機能を試してみた
Alternative WebView
はじめる前に知っておきたいAndroidアプリ開発のポイント
Android Wearと戦ってみた
Ad

Similar to Android 6.0 Marshmallow App Permissions 実践編 (20)

PDF
Android Wear & Android M 最新トピック
PDF
Cordova利用アプリ開発経験談
PDF
Android Wear最新トピック+α
PDF
[展開用]Android wear abc2014w-kenichikambara
PDF
Android Wearアプリ プレビュー版→正式版への移植ガイド
PPTX
HTML5ハイブリッドアプリ開発のベストプラクティス
PDF
Android Wearの概要とアプリ開発の基礎
PDF
Android Wearアプリ開発経験談
PDF
リモート・スマホ・レンタル(第2回 Androidテスト祭り)
PDF
[Jagys]android41+開発ツール紹介
PDF
[SC10] 自社開発モバイルアプリの DLP 対応化を Microsoft Intune で可能に
PPTX
ABC2012Spring 20120324
PDF
兄弟アプリのロジック共通化とビルド高速化の実験
PPTX
JaSST'16 Tokyo モバイルセッション
PDF
Visual Studio 2013 と HTML5 で実現するマルチデバイス/マルチプラットフォーム アプリの開発
PDF
Android Wear 最新トピック
PPTX
Windows Phoneの 企業内活用方法、 社内向けアプリ開発と展開
PDF
Devsumi2013 15-C-1 実践!スマホアプリのマネタイズ!! ~マーケット把握術と iPhone&Androidプログラミングテクニック~
PPTX
Droidcon London2012 Speaker Experience
PPT
アンドロイド勉強会第二回 080525 3
Android Wear & Android M 最新トピック
Cordova利用アプリ開発経験談
Android Wear最新トピック+α
[展開用]Android wear abc2014w-kenichikambara
Android Wearアプリ プレビュー版→正式版への移植ガイド
HTML5ハイブリッドアプリ開発のベストプラクティス
Android Wearの概要とアプリ開発の基礎
Android Wearアプリ開発経験談
リモート・スマホ・レンタル(第2回 Androidテスト祭り)
[Jagys]android41+開発ツール紹介
[SC10] 自社開発モバイルアプリの DLP 対応化を Microsoft Intune で可能に
ABC2012Spring 20120324
兄弟アプリのロジック共通化とビルド高速化の実験
JaSST'16 Tokyo モバイルセッション
Visual Studio 2013 と HTML5 で実現するマルチデバイス/マルチプラットフォーム アプリの開発
Android Wear 最新トピック
Windows Phoneの 企業内活用方法、 社内向けアプリ開発と展開
Devsumi2013 15-C-1 実践!スマホアプリのマネタイズ!! ~マーケット把握術と iPhone&Androidプログラミングテクニック~
Droidcon London2012 Speaker Experience
アンドロイド勉強会第二回 080525 3
Ad

More from Kenichi Kambara (20)

PDF
Hello Flutterの次におさえたい Flutterのポイント その6 (レイアウト編)
PDF
Hello Flutter”の次におさえたい Flutterのポイント その5
PDF
[ABC2018Spring]Flutterアプリ開発入門
PDF
“Hello Flutter”の次におさえたい Flutterのポイント その4
PDF
[Google I/O 2018 Highlights] Sandbox
PDF
[Google I/O 2018 Highlights] Flutter / WearOS
PDF
"Hello Flutter"の次におさえたいFlutterのポイントその3
PDF
Hello Flutterの次におさえたいFlutterのポイントその2
PDF
I/Oへの期待+海外渡航持ち物Tips
PDF
Hello Flutterの次におさえたいFlutterのポイント
PDF
Developing Android Apps for Google Assistant
PDF
Google Assistant対応アプリ開発3つのポイント
PDF
10分で作るGoogle Assistant対応アプリ
PDF
[Kotlin勉強会] Hello Kotlinの次におさえたいKotlinの勘所
PDF
Android O (Picture In Picture)入門+実装例
PDF
AndroidアプリのKotlin移行時に遭遇した問題と対処例
PDF
Android O (Beta) Topics
PDF
Publishing Android Wear 2.0 Apps
PDF
Android Studio 2.3 New Features
PDF
Android 7.0 Nougat マルチウィンドウ解説+α
Hello Flutterの次におさえたい Flutterのポイント その6 (レイアウト編)
Hello Flutter”の次におさえたい Flutterのポイント その5
[ABC2018Spring]Flutterアプリ開発入門
“Hello Flutter”の次におさえたい Flutterのポイント その4
[Google I/O 2018 Highlights] Sandbox
[Google I/O 2018 Highlights] Flutter / WearOS
"Hello Flutter"の次におさえたいFlutterのポイントその3
Hello Flutterの次におさえたいFlutterのポイントその2
I/Oへの期待+海外渡航持ち物Tips
Hello Flutterの次におさえたいFlutterのポイント
Developing Android Apps for Google Assistant
Google Assistant対応アプリ開発3つのポイント
10分で作るGoogle Assistant対応アプリ
[Kotlin勉強会] Hello Kotlinの次におさえたいKotlinの勘所
Android O (Picture In Picture)入門+実装例
AndroidアプリのKotlin移行時に遭遇した問題と対処例
Android O (Beta) Topics
Publishing Android Wear 2.0 Apps
Android Studio 2.3 New Features
Android 7.0 Nougat マルチウィンドウ解説+α

Android 6.0 Marshmallow App Permissions 実践編