Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
パーミッションを許可してもらお/security_update_history
Search
Yamaton
July 05, 2024
Programming
93
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
パーミッションを許可してもらお/security_update_history
[potatotips-88](
https://github.com/potatotips/potatotips/wiki/potatotips-88)のLT資料です
。
Yamaton
July 05, 2024
More Decks by Yamaton
See All by Yamaton
「他のアプリの上に重ねて表示」を使って推しを常駐させることでQOLを上げる
keiyamamoto
0
810
Other Decks in Programming
See All in Programming
不幸な GC
chencmd
0
890
Go を使い始めて 2 ヶ月の学び / My first two months with Go
contour_gara
0
420
RSSとCodexを使ってX投稿自動化してみた
ochtum
0
110
コンパウンドプロダクト開発のためのローカルプロセスマネージャー再発明 #layerxgo
izumin5210
0
650
高専キャリア LT 発表内容
crysta1221
6
5.6k
AIを上手に使っていこうとしたら越境せざるを得なくなった話 〜実践1年で見えた境界を越えなければならない理由と進め方〜 / Crossing borders with AI
tomoyakitaura
4
1.1k
『寄り添うラジオ』をAIで作る 体験価値から逆算した、会話しないUXと品質設計
theoriatec2024
3
120
The Good Stuff, Not the Slop: Engineering High-Quality Android Apps with Modern AI Tooling
danybony
1
190
PHPプロジェクトの結合バランスを可視化する #php_night
kajitack
0
230
iOS開発×AI駆動開発 〜最近使って便利だったスキルの話〜
nogu66
0
140
数年滞っていたダークモード対応をおよそ2週間で完了させる
chigichan24
0
680
新卒PdEのリアル
ryu1013
1
420
Featured
See All Featured
Designing Experiences People Love
moore
143
24k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
970
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
How GitHub (no longer) Works
holman
316
150k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
490
エンジニアに許された特別な時間の終わり
watany
108
250k
Done Done
chrislema
186
16k
Fireside Chat
paigeccino
42
4k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
230
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
Faster Mobile Websites
deanohume
310
32k
The Invisible Side of Design
smashingmag
301
52k
Transcript
パーミッションを 許可してもらお STORES 決済 Android Yamaton / Kei Yamamoto
自己紹介 STORES 決済 Android 2021年1月1日入社 4年目 2013年からAndroid(中2年育休) 妻、長男、次男、猫 Yamaton / やまとん
すてきなアプリなのに 使ってもらえない 1
どうして許可してくれないの? せっかくつくった機能も パーミッションを許可してもらえないと つかえない(T ^ T) だったらどうしてユーザーはパーミッションを 許可してくれないんだろう?
全てのアクセス!? こわっ!!!!!!こ わいよ!!!!! 絶対無理!!むり! むり!!!むり〜〜 すーぱーらぶりーアプリ にこの端末の全ての ファイルへのアクセスを
ユーザーはみんな最初の 1歩が踏み出せないだけ →手伝ってあげよ!
許可を押し易い ようにしてあげる 2
タップジャッキング すーぱーらぶりーアプリ にこの端末の全ての ファイルへのアクセスを
すーぱーらぶりーアプリ にこの端末の全ての ファイルへのアクセスを タップジャッキング 高利回り投資物件 増加中!今すぐ 広告を見るだけでポイントが貯まる みんなはじめてる新サービス 詳細を見る
すーぱーらぶりーアプリ にこの端末の全ての ファイルへのアクセスを タップジャッキング 高利回り投資物件 増加中!今すぐ 広告を見るだけでポイントが貯まる みんなはじめてる新サービス 詳細を見る
すーぱーらぶりーアプリ にこの端末の全ての ファイルへのアクセスを タップジャッキング 高利回り投資物件 増加中!今すぐ 広告を見るだけでポイントが貯まる みんなはじめてる新サービス 詳細を見る
すーぱーらぶりーアプリ にこの端末の全ての ファイルへのアクセスを タップジャッキング 高利回り投資物件 増加中!今すぐ 広告を見るだけでポイントが貯まる みんなはじめてる新サービス 詳細を見る
実装
How To • AndroidManifest.xml • 重ねるViewの⽤意 • WindowManagerで addView
How To • AndroidManifest.xml • 重ねるViewの⽤意 • WindowManagerで addView
AndroidManifest.xml <uses-permission android:name= "android.permission.SYSTEM_ALERT_WINDOW" />
How To • AndroidManifest.xml • 重ねるViewの⽤意 • WindowManagerで addView
重ねるViewを⽤意 val view = LayoutInflater.from(context: this). inflate(R.layout.layout_overlay, root: null)
How To • AndroidManifest.xml • 重ねるViewの⽤意 • WindowManagerで addView
W indow M anager で addView val view = LayoutInflater.from(context:
this). inflate(R.layout.layout_overlay, root: null) val params = WindowManager.LayoutParams( WindowManager.LayoutParams.TYPE_SYSTEM_ALERT, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, PixelFormat.TRANSPARENT ) val windowManager = getSystemService(Context.WINDOW_SERVICE) as WindowManager windowManager.addView(view, params)
TYPE_STATUS_BAR TYPE_SEARCH_BAR TYPE_SYSTEM_ALERT TYPE_KEYGUARD TYPE_SYSTEM_DIALOG TYPE_KEYGUARD_DIALOG TYPE_INPUT_METHOD TYPE_INPUT_METHOD_DIALOG TYPE_WALLPAPER TYPE_STATUS_BAR_PANEL
TYPE_SECURE_SYSTEM_OVERLAY TYPE_DRAG TYPE_STATUS_BAR_SUB_PANEL TYPE_POINTER TYPE_NAVIGATION_BAR TYPE_VOLUME_OVERLAY TYPE_BOOT_PROGRESS TYPE_INPUT_CONSUMER TYPE_NAVIGATION_BAR_PANEL TYPE_DISPLAY_OVERLAY TYPE_MAGNIFICATION_OVERLAY TYPE_PRIVATE_PRESENTATION TYPE_VOICE_INTERACTION TYPE_ACCESSIBILITY_OVERLAY TYPE_VOICE_INTERACTION_STARTING TYPE_DOCK_DIVIDER TYPE_QS_DIALOG TYPE_SCREENSHOT TYPE_PRESENTATION TYPE_APPLICATION_OVERLAY TYPE_ACCESSIBILITY_MAGNIFICATION_OVERLAY TYPE_NOTIFICATION_SHADE TYPE_STATUS_BAR_ADDITIONAL TYPE_SYSTEM_DIALOG, TYPE_APPLICATION_ABOVE_SUB_PANEL, TYPE_APPLICATION_MEDIA_OVERLAY, TYPE_APPLICATION_ATTACHED_DIALOG, TYPE_APPLICATION_SUB_PANEL, TYPE_APPLICATION_MEDIA, TYPE_APPLICATION_PANEL, TYPE_DRAWN_APPLICATION, TYPE_APPLICATION_STARTING, TYPE_APPLICATION, TYPE_BASE_APPLICATION, Application windows 4階層 Sub-windows 6階層 System windows 32階層
W indow M anager で addView val view = LayoutInflater.from(context:
this). inflate(R.layout.layout_overlay, root: null) val params = WindowManager.LayoutParams( WindowManager.LayoutParams.TYPE_SYSTEM_ALERT, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, PixelFormat.TRANSPARENT ) val windowManager = getSystemService(Context.WINDOW_SERVICE) as WindowManager windowManager.addView(view, params)
タップジャッキング! すーぱーらぶりーアプリ にこの端末の全ての ファイルへのアクセスを 高利回り投資物件 増加中!今すぐ 広告を見るだけでポイントが貯まる みんなはじめてる新サービス 詳細を見る
これは過去のおはなし • Android 6 ◦ TYPE_SYSTEM_ALERTの明⽰的な許可(設定画⾯を開いて) が必要になりました • Android 7
◦ TYPE_SYSTEM_ALERT使⽤制限 ◦ TYPE_APPLICATION_OVERLAYの仮導⼊ ▪ TYPE_SYSTEM_ALERTよりも下のレイヤー • Android 8 ◦ TYPE_APPLICATION_OVERLAYが正式に導⼊ ▪ タップジャッキングはこの変更で完全に終了!!! • でもまだTYPE_APPLICATION_OVERLAYが残ってる!!!!!!!
これは過去のおはなし • Android 6 ◦ TYPE_SYSTEM_ALERTの明⽰的な許可(設定画⾯を開いて) が必要になりました • Android 7
◦ TYPE_SYSTEM_ALERT使⽤制限 ◦ TYPE_APPLICATION_OVERLAYの仮導⼊ ▪ TYPE_SYSTEM_ALERTよりも下のレイヤー • Android 8 ◦ TYPE_APPLICATION_OVERLAYが正式に導⼊ ▪ タップジャッキングはこの変更で完全に終了!!! • でもまだTYPE_APPLICATION_OVERLAYが残ってる!!!!!!!
W indow M anager で addView val view = LayoutInflater.from(context:
this). inflate(R.layout.layout_overlay, root: null) val params = WindowManager.LayoutParams( WindowManager.LayoutParams.TYPE_SYSTEM_ALERT, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, PixelFormat.TRANSPARENT ) val windowManager = getSystemService(Context.WINDOW_SERVICE) as WindowManager windowManager.addView(view, params)
これは過去のおはなし • Android 6 ◦ TYPE_SYSTEM_ALERTの明⽰的な許可(設定画⾯を開いて) が必要になりました • Android 7
◦ TYPE_SYSTEM_ALERT使⽤制限 ◦ TYPE_APPLICATION_OVERLAYの仮導⼊ ▪ TYPE_SYSTEM_ALERTよりも下のレイヤー • Android 8 ◦ TYPE_APPLICATION_OVERLAYが正式に導⼊ ▪ タップジャッキングはこの変更で完全に終了!!! • でもまだTYPE_APPLICATION_OVERLAYが残ってる!!!!!!!
TYPE_STATUS_BAR TYPE_SEARCH_BAR TYPE_SYSTEM_ALERT TYPE_KEYGUARD TYPE_SYSTEM_DIALOG TYPE_KEYGUARD_DIALOG TYPE_INPUT_METHOD TYPE_INPUT_METHOD_DIALOG TYPE_WALLPAPER TYPE_STATUS_BAR_PANEL
TYPE_SECURE_SYSTEM_OVERLAY TYPE_DRAG TYPE_STATUS_BAR_SUB_PANEL TYPE_POINTER TYPE_NAVIGATION_BAR TYPE_VOLUME_OVERLAY TYPE_BOOT_PROGRESS TYPE_INPUT_CONSUMER TYPE_NAVIGATION_BAR_PANEL TYPE_DISPLAY_OVERLAY TYPE_MAGNIFICATION_OVERLAY TYPE_PRIVATE_PRESENTATION TYPE_VOICE_INTERACTION TYPE_ACCESSIBILITY_OVERLAY TYPE_VOICE_INTERACTION_STARTING TYPE_DOCK_DIVIDER TYPE_QS_DIALOG TYPE_SCREENSHOT TYPE_PRESENTATION TYPE_APPLICATION_OVERLAY TYPE_ACCESSIBILITY_MAGNIFICATION_OVERLAY TYPE_NOTIFICATION_SHADE TYPE_STATUS_BAR_ADDITIONAL TYPE_SYSTEM_DIALOG, TYPE_APPLICATION_ABOVE_SUB_PANEL, TYPE_APPLICATION_MEDIA_OVERLAY, TYPE_APPLICATION_ATTACHED_DIALOG, TYPE_APPLICATION_SUB_PANEL, TYPE_APPLICATION_MEDIA, TYPE_APPLICATION_PANEL, TYPE_DRAWN_APPLICATION, TYPE_APPLICATION_STARTING, TYPE_APPLICATION, TYPE_BASE_APPLICATION, Application windows 4階層 Sub-windows 6階層 System windows 32階層 システムダイアログ TYPE_SYSTEM_ALERT TYPE_APPLICATION_OVERLAY
これは過去のおはなし • Android 6 ◦ TYPE_SYSTEM_ALERTの明⽰的な許可(設定画⾯を開いて) が必要になりました • Android 7
◦ TYPE_SYSTEM_ALERT使⽤制限 ◦ TYPE_APPLICATION_OVERLAYの仮導⼊ ▪ TYPE_SYSTEM_ALERTよりも下のレイヤー • Android 8 ◦ TYPE_APPLICATION_OVERLAYが正式に導⼊ ▪ タップジャッキングはこの変更で完全に終了!!! • でもまだTYPE_APPLICATION_OVERLAYが残ってる!!!!!!!
これは過去のおはなし • Android 6 ◦ TYPE_SYSTEM_ALERTの明⽰的な許可(設定画⾯を開いて) が必要になりました • Android 7
◦ TYPE_SYSTEM_ALERT使⽤制限 ◦ TYPE_APPLICATION_OVERLAYの仮導⼊ ▪ TYPE_SYSTEM_ALERTよりも下のレイヤー • Android 8 ◦ TYPE_APPLICATION_OVERLAYが正式に導⼊ ▪ タップジャッキングはこの変更で完全に終了!!! • でもまだTYPE_APPLICATION_OVERLAYが残ってる!!!!!!! ForegroundServiceを起動して Notificationエリアに 起動中の旨を表⽰が必須に! ベースにしているウィンドウが GONE / INVISIBLEだと タッチイベントを透過できない
ここからが本題だよ!
パーミッションを 許可してもらお STORES 決済 Android Yamaton / Kei Yamamoto
パーミッションを 許可してもらお STORES 決済 Android Yamaton / Kei Yamamoto
パーミッションを 許可してもらお STORES 決済 Android Yamaton / Kei Yamamoto Android
OSの バージョンアップで 何が対策されたの かな?
Android 10 ・バックグラウンドアプリ(Serviceを利用)の制限 ・オーバーレイ禁止 ・通信制限
Android 11 ・バブルAPIの導入 ・SYSTEM_ALERT_WINDOW パーミッションを求めるアプリは全て悪!
Android 12 ・SYSTEM_ALERT_WINDOWの制限強化 ・オーバーレイ表示時に通知を表示 ・通知から許可しないと表示できない
Android 13 ・クロスアプリケーションアクティビティ埋め込み ・ホストアプリとゲストアプリ ・AndroidManifestで明示的に許可
Android 13 ・クロスアプリケーションアクティビティ埋め込み ・ホストアプリとゲストアプリ ・AndroidManifestで明示的に許可
安心だね!
Thank you!