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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
わからない話を追いかけたら、プログラミング言語を作る側にいた
ydah
3
530
Webエンジニアなのにブラウザの仕組みがわからないので、Pythonで自作してみた
tatsuki12
4
940
<title><a id="</title>君はこのHTMLをパースできるか"></a></title> #雑LT_study
pizzacat83
0
170
PostgreSQL 18で考えるUUID主キー
kazuhiro1982
0
490
AI Engineeringは、AIプロダクトだけのものか? 〜AIがソフトウェアを作る時代の新しい当たり前〜 / No AI in your product. AI Engineering in your development.
rkaga
5
500
AWS DevOps AgentのAzure接続機能を検証して見えた活用法/Use Cases Verified for the AWS DevOps Agent's Azure Connectivity Feature
masakiokuda
1
260
為什麼你並不需要ViewModel / No, you don't need a ViewModel
lovee
1
510
プロポーザルを書いてもらう
pvcresin
0
570
freeeにおけるEvalsの実践例の紹介
freee
PRO
0
140
リアルな遅延を測る仕様
kota_yata
1
120
複数の Claude Code が"放置"されてしまう問題をCLI ダッシュボードを自作して解決した話
sumihiro3
1
710
夏だ!祭りだ!祭りとはドメインモデリングでは?
ryugen04
0
350
Featured
See All Featured
Mobile First: as difficult as doing things right
swwweet
225
10k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
430
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
64
56k
The agentic SEO stack - context over prompts
schlessera
0
870
Building Adaptive Systems
keathley
44
3.2k
Context Engineering - Making Every Token Count
addyosmani
9
1.1k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.8k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
730
VelocityConf: Rendering Performance Case Studies
addyosmani
331
25k
[SF Ruby Conf 2025] Rails X
palkan
2
1.3k
Prompt Engineering for Job Search
mfonobong
0
410
Test your architecture with Archunit
thirion
2
2.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!