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
90
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
800
Other Decks in Programming
See All in Programming
AI時代のUIはどこへ行く?その2!
yusukebe
21
7.2k
Mujeres en SEO Summit 2026 - Greatest Disaster Hits en Web Performance
guaca
0
180
[2026年度第1回ORセミナー] 計画最適化ベンチャーと競技プログラミング人材
terryu16
0
260
Developing with AI Agents — Codex, Claude Code & Cowork Practical Guide
x5gtrn
PRO
0
1.3k
Webフレームワークの ベンチマークについて
yusukebe
0
170
作って学ぶ、 JSX (TSX) ランタイムの基本
syumai
7
1.6k
技術記事、 専門家としてのプログラマ、 言語化
mizchi
13
6k
dRuby over BLE
makicamel
2
340
AIだと陥りがちなJakarta EE最新技術への移行時の落とし穴と解決策
tnagao7
0
110
スマートグラスで並列バイブコーディング
hyshu
0
140
RTSPクライアントを自作してみた話
simotin13
0
610
過去最大のMCPアップデート! 2026-07-28 RC版の謎に迫る
licux
6
330
Featured
See All Featured
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Odyssey Design
rkendrick25
PRO
2
700
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.3k
Faster Mobile Websites
deanohume
310
31k
Discover your Explorer Soul
emna__ayadi
2
1.1k
Mobile First: as difficult as doing things right
swwweet
225
10k
How to make the Groovebox
asonas
2
2.2k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
180
Crafting Experiences
bethany
1
180
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
240
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
55k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.4k
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!