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
[2026-09-26]空論ジェネリックプロセス~テスト資産とAIで紡ぐ、再現可能なパフォーマンスチューニングの話~
tosite
0
260
Streamlitで実現する自然言語データアプリ開発
ayumu_yamaguchi
1
340
技術的負債の返済は、AI時代の複利で効く投資 — 経営としての意思決定とその遂行
curekoshimizu
1
2.2k
難しいけど、読めた。- OSSの入口に立った話。
sts11142
0
140
Atomic Design, Enforced: Scaling Mobile Design Systems (next.app devCon / droidCon Berlin 2026)
steliosf
PRO
0
130
モジュールの視点からSwiftを読み解く #iosdc
s_shimotori
0
350
APNsからLive Activityを開始する話
yumnumm
0
150
GemmaをJevのように使ってみる / Use Gemma like Jev
kishida
5
710
re:Inventに行く前に知っておきたい現地参加のノウハウ
nokomoro3
0
370
動作中のプログラムの中身をリアルタイムに覗く / Realtime Debugger for CSharp with Roslyn
prota
1
1.8k
CodeRabbitの効果検証と過ごしてみた3ヶ月
armondando
0
150
半永久的に提供し続けられるプライベートクラウドを目指して ― 利用者の認知負荷を抑えるAPI抽象化とハードウェア世代交代の基盤設計
tomokon
0
450
Featured
See All Featured
Optimizing for Happiness
mojombo
378
71k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
550
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
760
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
480
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
2
930
The #1 spot is gone: here's how to win anyway
tamaranovitovic
4
1.2k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
WENDY [Excerpt]
tessaabrams
14
40k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
400
Are puppies a ranking factor?
jonoalderson
2
4k
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からかなり面倒臭いことになります
ご清聴ありがとうございました