Android 4.2におけるsdcard(内部ストレージ)の仕様変更についてのまとめ。

今回は、Android 4.2におけるsdcard(内部ストレージ)の仕様変更についてです。


Android 4.2では、マルチユーザーという機能が追加されました。
赤枠内にある2つのアイコンがそれぞれのユーザーを示していて、使いたい方のユーザーのアイコンをタップ⇒ロック解除の操作だけで簡単にユーザーが切り替わる仕組みです。


マルチユーザー機能では、それぞれのユーザーがアプリをインストールしたり、撮影した写真を保存したり、ファイルをダウンロードしたりすることができます。

言いかえると、端末内にそれぞれのユーザーがアプリや写真、ダウンロードしたファイルなどを保存するための専用のフォルダ(ディレクトリ)を作成する必要があります。

Android 4.1まではユーザーはもちろん1人だけで、そのデータは/data/media内に保存されていました。

/data/media内のデータは、/mnt/sdcardに表示されるようになっています。/data/media内のデータは/mnt/sdcardのデータと同じだと思ってください。

/mnt/sdcardは、Android端末をWindows PCにつなぐと表示され、ファイルやフォルダの追加・削除など編集可能な内部ストレージのことです。

Android 4.2では、それぞれのユーザーごとにフォルダを準備する必要があるため、デフォルトのユーザーのデータが/data/media/0に保存されるようになり、次に新しく追加されたユーザーのデータは/data/media/10、その次に追加されたユーザーのデータは/data/media/20に保存されるというように変更されました。


では、Android 4.1の時点で保存されていたデフォルトのユーザーのデータは、Android 4.2にアップデートするとどうなってしまうのでしょうか?

Android 4.1から4.2にアップデートすると、まずAndroid 4.2のOSが/data/media/0というフォルダを生成して、/data/media内のファイルやフォルダの全て、つまりAndroid 4.1の時点で保存していたデフォルトユーザーのデータをまるごと/data/media/0に移動します。

では実際に、0のフォルダ(デフォルトユーザー用のフォルダ)の内容を覗いてみます。


Android 4.1の時点で/data/mediaに保存されていたファイル群が、/data/media/0にまるごと移動しています。


次に、10のフォルダ(追加されたユーザー用のフォルダ)を覗いてみます。


新しく追加された状態で、アプリのインストールやファイルのダウンロードなどはまだ何もしていないので、デフォルトで生成されているフォルダのみがある状況です。


ちなみに、Android 4.2にアップデートしたNexus 7とWindows PCをUSBでつないで、内部ストレージを見るとどうなるのでしょうか。

まず、デフォルトユーザーを選択してみます。


Windows PC上で認識される内部ストレージには、/data/media/0の内容が表示されます。


次に、追加したユーザーを選択してみます。


/data/media/0の表示は消え、自動で/data/media/10の内容が表示されました。


ユーザー切り替えに関しては、使用者が違和感を感じることなくスムースにできる印象です。


また、Android 4.2のマルチユーザー機能が追加されてディレクトリのパスが従来の/data/mediaから/data/media/0に変更になることで、/mnt/media内にあるフォルダを参照するアプリに大きな影響を与えます。

例えばTitanium Backupは、バックアップデータが/mnt/media/TitaniumBackupにありますが、Android 4.1から4.2にアップデートしたことで/mnt/media/0/TitaniumBackupに移動されます。

Titanium Backupのアプリは、バックアップしていたアプリやアプリのデータを復元する際に/mnt/media/TitaniumBackupを参照しますが、Android 4.2ではバックアップファイルが/mnt/media/0/TitaniumBackupに移動して/mnt/media/TitaniumBackupにはバックアップファイルが全く存在しないので、リストアできるアプリが0個と表示されました。(Android 4.2のアップデート後に、今まではあった内部ストレージのフォルダやファイルが消えてアプリのデータ復元などができなくなった時の対処法。を参照)

この問題を解決するには、Android 4.2以降のバージョンが/mnt/media/をAndroid 4.1以前と同じように扱う方法と、アプリがAndroid 4.2に対応させて参照する場所を/mnt/media/0/に変更する方法があります。

ですが、Android OS側がAndroid 4.1以前と同じ仕様に戻るのは現実的ではありません。

主要なアプリの中には、既にAndroid 4.2への対応アップデートを開始しているものもありますが、今後はこのように遅かれ早かれアプリ側がAndroid 4.2に対応させていくことになるでしょう。

Android 4.2におけるsdcard(内部ストレージ)の仕様変更についてのまとめは以上です。

-Galaxy Nexus, Nexus7

Copyright © アンドロイドラバー, 2011-2024 All Rights Reserved