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
860
Other Decks in Programming
See All in Programming
Railsバージョンを4倍にした話
optim
0
800
続・コーディングルールの鮮度を保ちたい / keep-fresh-go-internal-conventions-again
handlename
0
130
AI時代のTerminal環境を UNIX哲学で設計・運用する
yasunori0418
1
290
[2026-10-09]一枚の布で作らなくてもいい。 信頼性は「パッチワーク」で紡がれる~既存の運用と新しい可能性をつなぎ合わせてきたCREの話~
tosite
0
110
當我們開始不讀 Code - AI Agent 時代,Code Review 與 Clean Code 還剩下什麼?
jame2408
1
340
全ての永続トークンを、生まれる前に消し去りたい!
sylph01
2
1.5k
AmebaブログはKMPから卒業します
kmars0605
0
270
【加筆修正版】Laravel のアプリケーションをどこにデプロイするか #phpcon_ehime
akase244
0
160
Lambda durable functionsでHuman in the Loopを楽に…楽に……
har1101
2
210
ChromeでローカルLLM
ryu1013
0
170
作って学ぶSpring BootのAuto Configuration / JJUG Night Seminar 2026-10-19
rshindo
0
210
AIがコードを書いてくれる時代、我々は何を確かめるのか
yosuke_furukawa
PRO
12
5k
Featured
See All Featured
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
940
Navigating Team Friction
lara
192
16k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
580
Test your architecture with Archunit
thirion
2
2.5k
Git: the NoSQL Database
bkeepers
PRO
433
67k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
470
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
4 Signs Your Business is Dying
shpigford
187
23k
Reality Check: Gamification 10 Years Later
codingconduct
0
2.4k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
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からかなり面倒臭いことになります
ご清聴ありがとうございました