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(内部ストレージ)の仕様変更についてのまとめは以上です。