Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
パーミッションを許可してもらお/security_update_history
Search
Yamaton
July 05, 2024
Programming
97
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
820
Other Decks in Programming
See All in Programming
AmebaブログはKMPから卒業します
kmars0605
0
180
sbt 2.0: takeoff
eed3si9n
0
160
SREの越境 / SRE Collaboration
y0hgi
2
310
iOS 27でニュースアプリはどう変わる!? 〜日経電子版の新機能対応と、開発事例から〜
lynnswap
7
13k
すこし踏み込む CancellationToken
htkym
2
1.7k
パスワード再設定メールのURLについて知っておこう
uyuki234
0
160
3回つくってわかった、 定期実行ジョブ基盤の本質情報
takai
0
450
ChromeでローカルLLM
ryu1013
0
140
コードで差別化できない時代の ソフトウェアエンジニアリング / Software Engineering in an Era Where Code Doesn’t Differentiate
kishida
2
180
contenteditable と日本語入力に向き合う
colorful12
0
200
APNsからLive Activityを開始する話
yumnumm
0
170
PumaからFalconに移行したRailsアプリケーションでの実践
falcon8823
0
170
Featured
See All Featured
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.5k
Building Adaptive Systems
keathley
44
3.2k
Balancing Empowerment & Direction
lara
6
1.3k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.5k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
280
Darren the Foodie - Storyboard
khoart
PRO
4
4k
BBQ
matthewcrist
90
10k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
520
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
730
Facilitating Awesome Meetings
lara
57
7.2k
Making Projects Easy
brettharned
120
6.8k
Fashionably flexible responsive web design (full day workshop)
malarkey
409
67k
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!