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
Android11におけるローカルストレージアクセスの辛み
Search
wa2c
November 27, 2020
Programming
2.9k
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Android11におけるローカルストレージアクセスの辛み
wa2c
November 27, 2020
More Decks by wa2c
See All by wa2c
DocumentsProviderアプリを作ってみた
wa2c
0
850
Other Decks in Programming
See All in Programming
ChromeでローカルLLM
ryu1013
0
160
残高管理から台帳サービスへの進化
artoy
1
210
Vue.jsで作る空間解析アプリとCapacitorプラグインのData Bridge
hal_spidernight
1
110
[Dev Group Paris Octobre 26] Agentforce, SIforce, Claudeforce, Slackbot… on s'y retrouve ?
nabondance
0
120
GemmaをJevのように使ってみる / Use Gemma like Jev
kishida
5
840
當我們開始不讀 Code - AI Agent 時代,Code Review 與 Clean Code 還剩下什麼?
jame2408
1
320
Apple Intelligenceとオンデバイス時代の到来
yahir0
0
140
Kotlinize Is Not Just Converting to Kotlin
chigichan24
1
190
dotNET_vulnclicker_intro.pdf
deka_morita
0
150
golang-bob.pdf
iwatsukayura
0
140
Optunaを作ったときにやりたかったこと、その後 (2026/10/16, Optuna Meetup #3)
iwiwi
4
1.3k
あなたの await、OS まで届いてる? strace で覗く JavaScript の非同期
hasutosasaki
1
1.5k
Featured
See All Featured
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
580
Designing Experiences People Love
moore
143
24k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
440
Utilizing Notion as your number one productivity tool
mfonobong
4
620
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
3.5k
Facilitating Awesome Meetings
lara
57
7.2k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
720
Darren the Foodie - Storyboard
khoart
PRO
4
4k
The Cost Of JavaScript in 2023
addyosmani
55
10k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
270
Reflections from 52 weeks, 52 projects
jeffersonlam
356
22k
Transcript
Android 11におけるローカル ストレージアクセスの辛み 対象範囲別ストレージの制約について
自己紹介 和田 篤 • Androidエンジニア • 2018年8月にゆめみに転職 (前職は業務システム開発) • 音楽プレイヤーアプリ
「Medoly」を個人開発 (2013年~) • Qiita: https://qiita.com/wa2c Shaniwar Wada (Pune, India) Medoly
アジェンダ • Androidストレージ管理の主な変遷 • 対象範囲別ストレージ • 対象範囲別ストレージによって困るパターン • 対象範囲別ストレージ非対応ファイルへのアクセス
Androidストレージ管理の主な変遷 • API 16: READ_EXTERNAL_STORAGE / WRITE_EXTERNAL_STORAGE • API 19:
Storage Access Framework (SAF), SDカード書込み制限 • API 23: Runtime Permission • API 26: file:// URI使用の制限 • API 29: 対象範囲別ストレージ (Scoped Storage) • API 30: 対象範囲別ストレージの必須化 / MANAGE_EXTERNAL_STORAGE Androidローカルストレージ史上最大の苦難
対象範囲別ストレージ ファイルパスでアクセス可能な範囲 • アプリ固有ディレクトリ内 • MediaStoreに登録されているメディアファイル (動画・音楽・画像) FIle API (java.io.File)
を使って外部ストレージを探索するとどうなる? (READ_EXTERNAL_STORAGE 付与済み) • ディレクトリは見える (アクセス不可能なディレクトリは除く) • 対応ファイル以外は見えない • 見えないファイルにアクセスするとFileNotFoundException
対象範囲別ストレージによって困るパターン [ストレージ上のファイル] Album1 ディレクトリ ├ Audio1.m4a 音声 ├ Audio1.lrc 歌詞テキスト
├ Audio2.mp3 音声 ├ Audio2.txt 歌詞テキスト ├ Audio3.ape 音声 └ artwork.jpg アルバム画像 [見えるファイル] Album1 ├ Audio1.m4a ├ Audio1.lrc ├ Audio2.mp3 └ artwork.jpg File.listFiles() 類似例: • 一部の字幕ファイル(.stl, .ssa等)に対応した動画再生アプリ • 特殊な形式のメディアファイルを扱うアプリ アプリ
対象範囲別ストレージ 非対応ファイルへのアクセス
対応1: preserveLegacyExternalStorage • 従来と同様のストレージアクセスが可能 • API29のみ、30以降では使えない 移行するまでの一時しのぎ
対応2: MANAGE_EXTERNAL_STORAGE • 従来と同様のストレージアクセスが可能 • 多数のファイル操作をするアプリが対象 (ファイラー等) • Google Playに登録する際に審査がある
• 2021 年初頭まで Google Play へアップロードできない アプリ登録できるかはGoogle次第 (多分無理)
対応3: Storage Access Framework • 指定ディレクトリ以下のファイルにアクセス可能 • API30よりストレージのルートが指定出来なくなった • 従来のFile
APIからの置き換えが大変 ( MediaStoreとの連携、パスの相互変換が難しい ) 修正が大変、機能を諦める場合も
まとめ ローカルストレージを扱うアプリは、 Android 11からかなり面倒臭いことになります
ご清聴ありがとうございました