com.nttdocomo.device
クラス StorageDevice

Object
  拡張com.nttdocomo.device.StorageDevice

public class StorageDevice
extends Object
 [iアプリオプションAPI]

ストレージデバイスを定義します。 ストレージデバイスがアクセス可能かどうか、などの状態を取得したり、 実際にフォルダやファイルにアクセスするためのインスタンスを取得したりすることができます。

ストレージデバイス内のフォルダやファイルにアクセスするには、 デバイス名を指定してストレージデバイスのインスタンスを取得した後にアクセス権を指定してフォルダを取得します。 なお、デバイス名は ASCII 文字列で、最大でも 8 文字です。

外部メモリにアクセスするには、 デバイス名として "/ext0" を指定してインスタンスを取得します。 基本的に、外部メモリのスロットおよびメディアに対する操作はこのクラスで行いますが、 メディア内のファイルシステムに対する操作は com.nttdocomo.fs パッケージの Folder クラスや File クラスで行います。

DoJa API では、アクセス権を表すインスタンスは DoJaStorageService クラスを使用して取得します。 アクセス権の考え方やインスタンスの取得方法については DoJaStorageService クラスの説明を参照してください。

導入されたバージョン:
DoJa-4.1(902i)

フィールドの概要
static String CAPABILITY_FAT_LONG_NAME
           メディアの能力を表す文字列で、FAT でロングネームをサポートしていることを表します(= "FAT_LONG_NAME")。
static String CAPABILITY_FAT12
           メディアの能力を表す文字列で、FAT12 であることを表します(= "FAT12")。
static String CAPABILITY_FAT16
           メディアの能力を表す文字列で、FAT16 であることを表します(= "FAT16")。
static String CAPABILITY_FAT32
           メディアの能力を表す文字列で、FAT32 であることを表します(= "FAT32")。
static String CAPABILITY_MINISD
           メディアの能力を表す文字列で、miniSD Memory Card もしくは microSD Memory Card であることを表します(= "miniSD")。
static String CAPABILITY_SD
           メディアの能力を表す文字列で、SD Memory Card であることを表します(= "SD")。
static String CAPABILITY_SD_BINDING
           メディアの能力を表す文字列で、SD-Binding をサポートしていることを表します(= "SD-Binding")。
static String CATEGORY_ENCRYPTION
           メディアの能力のカテゴリを表す文字列で、暗号化を表します(= "encryption")。
static String CATEGORY_FILESYSTEM
           メディアの能力のカテゴリを表す文字列で、ファイルシステムを表します(= "filesystem")。
static String CATEGORY_HARDWARE
           メディアの能力のカテゴリを表す文字列で、ハードウェアを表します(= "hardware")。
 
メソッドの概要
 String[] getCapability(String category)
           メディアの能力を取得します。
 String getDeviceName()
           ストレージデバイスのデバイス名を取得します。
 Folder getFolder(AccessToken accessToken)
           フォルダのインスタンスを取得します。
static StorageDevice getInstance(String deviceName)
           デバイス名を指定してストレージデバイスのインスタンスを取得します。
 String getMediaId()
           メディアの識別子を取得します。
 String getPrintName()
           ストレージデバイスの表示名を取得します。
 boolean isAccessible()
           メディアにアクセス可能かどうかを取得します。
 boolean isReadable()
           メディアが読み出し可能かどうかを取得します。
 boolean isRemovable()
           メディアがリムーバブルかどうかを取得します。
 boolean isWritable()
           メディアが書き込み可能かどうかを取得します。
 
クラス Object から継承したメソッド
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

CATEGORY_HARDWARE

public static final String CATEGORY_HARDWARE

メディアの能力のカテゴリを表す文字列で、ハードウェアを表します(= "hardware")。 メディアの能力を取得する際に getCapability(String) メソッドの引数に指定します。

関連項目:
定数フィールド値

CAPABILITY_SD

public static final String CAPABILITY_SD

メディアの能力を表す文字列で、SD Memory Card であることを表します(= "SD")。 ハードウェアを表すカテゴリのメディアの能力を取得した際、 SD Memory Card であった場合に getCapability(String) メソッドの戻り値として返されます。

関連項目:
定数フィールド値

CAPABILITY_MINISD

public static final String CAPABILITY_MINISD

メディアの能力を表す文字列で、miniSD Memory Card もしくは microSD Memory Card であることを表します(= "miniSD")。 ハードウェアを表すカテゴリのメディアの能力を取得した際、 miniSD Memory Card もしくは microSD Memory Card であった場合に getCapability(String) メソッドの戻り値として返されます。

関連項目:
定数フィールド値

CATEGORY_FILESYSTEM

public static final String CATEGORY_FILESYSTEM

メディアの能力のカテゴリを表す文字列で、ファイルシステムを表します(= "filesystem")。 メディアの能力を取得する際に getCapability(String) メソッドの引数に指定します。

関連項目:
定数フィールド値

CAPABILITY_FAT12

public static final String CAPABILITY_FAT12

メディアの能力を表す文字列で、FAT12 であることを表します(= "FAT12")。 ファイルシステムを表すカテゴリのメディアの能力を取得した際、 FAT12 であった場合に getCapability(String) メソッドの戻り値として返されます。

関連項目:
定数フィールド値

CAPABILITY_FAT16

public static final String CAPABILITY_FAT16

メディアの能力を表す文字列で、FAT16 であることを表します(= "FAT16")。 ファイルシステムを表すカテゴリのメディアの能力を取得した際、 FAT16 であった場合に getCapability(String) メソッドの戻り値として返されます。

関連項目:
定数フィールド値

CAPABILITY_FAT32

public static final String CAPABILITY_FAT32

メディアの能力を表す文字列で、FAT32 であることを表します(= "FAT32")。 ファイルシステムを表すカテゴリのメディアの能力を取得した際、 FAT32 であった場合に getCapability(String) メソッドの戻り値として返されます。

関連項目:
定数フィールド値

CAPABILITY_FAT_LONG_NAME

public static final String CAPABILITY_FAT_LONG_NAME

メディアの能力を表す文字列で、FAT でロングネームをサポートしていることを表します(= "FAT_LONG_NAME")。 ファイルシステムを表すカテゴリのメディアの能力を取得した際、 FAT でロングネームをサポートしている場合に getCapability(String) メソッドの戻り値として返されます。

関連項目:
定数フィールド値

CATEGORY_ENCRYPTION

public static final String CATEGORY_ENCRYPTION

メディアの能力のカテゴリを表す文字列で、暗号化を表します(= "encryption")。 メディアの能力を取得する際に getCapability(String) メソッドの引数に指定します。

関連項目:
定数フィールド値

CAPABILITY_SD_BINDING

public static final String CAPABILITY_SD_BINDING

メディアの能力を表す文字列で、SD-Binding をサポートしていることを表します(= "SD-Binding")。 暗号化を表すカテゴリのメディアの能力を取得した際、 SD-Binding をサポートしている場合に getCapability(String) メソッドの戻り値として返されます。

関連項目:
定数フィールド値
メソッドの詳細

getInstance

public static StorageDevice getInstance(String deviceName)

デバイス名を指定してストレージデバイスのインスタンスを取得します。

同じデバイス名に対しては常に同じインスタンスを返します。

ADF に UseStorage キーを指定した i アプリのみこのメソッドを呼び出すことができます。

パラメータ:
deviceName - 取得したいストレージデバイスのデバイス名を指定します。 外部メモリにアクセスするには "/ext0" を指定します。
戻り値:
ストレージデバイスのインスタンスを返します。
例外:
IllegalStateException - ダウンロード即起動アプリがこのメソッドを呼び出した場合に発生します。
NullPointerException - 引数 deviceName に null が指定された場合に発生します。
IllegalArgumentException - 引数 deviceName で指定されたストレージデバイスが存在しない場合に発生します。
SecurityException - ADF に UseStorage キーの指定がないアプリケーションが、 このメソッドを呼び出した場合に発生します。
SecurityException - ロック機能などのネイティブ独自のセキュリティ設定により、 ストレージデバイスの使用が許可されない場合に発生します。

getDeviceName

public String getDeviceName()

ストレージデバイスのデバイス名を取得します。 このクラスのインスタンスを取得する際に getInstance(java.lang.String) メソッドの引数として指定したデバイス名を返します。

戻り値:
デバイス名を返します。

getPrintName

public String getPrintName()

ストレージデバイスの表示名を取得します。

表示名は、例えばユーザに対して外部メモリのスロットにメディアを差すよう促す場合に、 ダイアログに表示する文字列を 「sd.getPrintName() + "にアクセスできません。メディアが正しくセットされているかどうか確認してください。"」 というようにして生成することを想定しています。 そうすると、例えば miniSD をサポートしている端末では「miniSD にアクセスできません…」のように、 Memory Stick Duo をサポートしている端末では「Memory Stick Duoにアクセスできません…」のように表示することができます。

表示名としてどのような文字列を返すかは機種依存ですが、 半角 20 文字、あるいは、全角 10 文字以内の文字列です。

戻り値:
表示名を返します。

isRemovable

public boolean isRemovable()

メディアがリムーバブルかどうかを取得します。

戻り値:
メディアがリムーバブルな場合は true を、 そうでない場合は false を返します。

isAccessible

public boolean isAccessible()

メディアにアクセス可能かどうかを取得します。

リムーバブルなメディアがアクセス不能とみなされるのは、以下の場合を含みます。

  • メディアが挿入されていない場合。
  • 対応していないフォーマットな場合。
  • メディアが壊れている場合。

戻り値:
メディアがアクセス可能な場合は true を、 そうでない場合は false を返します。

isReadable

public boolean isReadable()

メディアが読み出し可能かどうかを取得します。

戻り値:
メディアが読み出し可能な場合は true を、 そうでない場合は false を返します。 このメソッドは、isAccessible() メソッドが false を返す状態の時は常に false を返します。

isWritable

public boolean isWritable()

メディアが書き込み可能かどうかを取得します。 読み出し専用のメディアだったり、ライトプロテクトノッチなどにより書き込みが禁止されているメディアだった場合は書き込み不可となります。

戻り値:
メディアが書き込み可能な場合は true を、 そうでない場合は false を返します。 このメソッドは、isAccessible() メソッドが false を返す状態の時は常に false を返します。

getCapability

public String[] getCapability(String category)
                                 throws java.io.IOException

メディアの能力を取得します。 アクセス権ファイル属性などに関してメディアに依存した処理を行うような場合は、 このメソッドで取得したメディアの種類を元に分岐を行います。

このメソッドの戻り値は文字列の配列ですが、 複数のメディアの能力を表す文字列を返す場合に、 それらがどのような順番で文字列の配列に格納されるかは機種依存です。 アプリケーションプログラマは、 どのような順番で格納されるかに関して何らかの仮定をおいたコーディングをしてはなりません。 すなわち、あるメディアの能力がサポートされているかどうかを調べる場合は、 戻り値の文字列の配列の全要素について比較を行って、 目的のメディアの能力を表す文字列と一致するものが含まれているかどうかを確認しなければなりません。

このメソッドはメディアの能力を取得するものなので、 メディアにアクセス可能でない状態の時に呼び出された場合は例外が発生します。

[メディアの種類に依存しない能力]

カテゴリ能力解説
"filesystem""FAT12"FAT12 ファイルシステムであることを表します。
"FAT16"FAT16 ファイルシステムであることを表します。
"FAT32"FAT32 ファイルシステムであることを表します。
"FAT_LONG_NAME"FAT でロングネームをサポートしていることを表します。
例えば、FAT12 でロングネームをサポートしていない場合の戻り値は {"FAT12"} のようになります。 また、例えば、FAT32 でロングネームをサポートしている場合の戻り値は {"FAT32", "FAT_LONG_NAME"} のようになります。

[SD Memory Card に依存する能力]

カテゴリ能力解説
"hardware""SD"SD Memory Cardであることを表します。
"miniSD"miniSD Memory Card もしくは microSD Memory Card であることを表します。
"encryption""SD-Binding"SD-Binding をサポートしていることを表します。この場合、SDBindingEncryptionAttribute クラスを使用することができます。
なお、SD Memory Card のスロットにアダプタを使用して miniSD Memory Card もしくは microSD Memory Card を挿している場合は、 SD Memory Card であるとして "SD" が返されます。

パラメータ:
category - 取得したいメディアの能力のカテゴリを指定します。 null を指定した場合は全てのカテゴリのメディアの能力を取得することを表します。
戻り値:
メディアの能力を表す文字列の配列を返します。 未知のカテゴリの場合、または、そのカテゴリで定義されるメディアの能力が存在しない場合は null を返します。
例外:
MediaNotFoundException - 指定されたデバイスにメディアが挿入されていない場合に発生します。
java.io.IOException - I/O エラーが発生した場合に発生します。

getMediaId

public String getMediaId()
                            throws java.io.IOException

メディアの識別子を取得します。 メディアの識別子の具体的な内容はメディアの種類に依存しますが、 このメソッドはメディアに一意の識別子を返すことが保証されています。

メディアの識別子は ASCII 文字列で、最大でも 32 文字です。

戻り値:
メディアの識別子を返します。
例外:
MediaNotFoundException - 指定されたデバイスにメディアが挿入されていない場合に発生します。
java.io.IOException - I/O エラーが発生した場合に発生します。

getFolder

public Folder getFolder(AccessToken accessToken)
                 throws java.io.IOException

フォルダのインスタンスを取得します。 ストレージデバイスの種類によって、 アクセス権から取得できるフォルダが変わります。 また、 当該フォルダがファイルシステム上に無い場合は、 このフォルダを新規作成します。

未知のアクセス権を表すクラスのインスタンスや、 既知のアクセス権を表すクラスを継承した未知のクラスのインスタンスが指定された場合は例外が発生します。

[SD Binding の場合]
StorageDevice.getInstance("/ext0").getFolder(accessToken); とした時の戻り値のフォルダは、実際はバインド ID に応じたディレクトリへのパス("/SD_BIND/SVC0001/SDB00001" など)にアクセスしますが、 パスとしては "/" を持つインスタンスとなります。

パラメータ:
accessToken - 取得したいフォルダのアクセス権を指定します。
戻り値:
フォルダのインスタンスを返します。
例外:
NullPointerException - 引数 accessToken に null が指定された場合に発生します。
IllegalArgumentException - 引数 accessToken にシステムが提供している以外のアクセストークン (AccessToken を実装した未知のクラスのオブジェクト) が指定された場合に発生します。
MediaNotFoundException - 指定されたデバイスにメディアが挿入されていない場合に発生します。
FileSystemFullException - 引数 accessToken に対応するフォルダが存在しない状態でこのメソッドを呼び出したにもかかわらず、 ファイルシステムに空き容量が無いためにフォルダを新規作成できなかった場合に発生します。
SecurityException - 引数 accessToken によって 同じコンテンツプロバイダで共有することが指示されているにもかかわらず、 コンテンツプロバイダが特定できない場合 (ADF に TrustedAPID キーの指定も、 CPBindingAuth キーの指定も無い場合) に発生します。
SecurityException - [DoJa-4.1 (902iS) 以降] 引数 accessToken によって 同じコンテンツプロバイダで共有することが指示されているにもかかわらず、 ADF に CPName キーが指定されていない場合に発生します。
IllegalStateException - UIM なしで起動できるプレインストールアプリケーションにおいて、 引数 accessToken によって UIM によるアクセス制限が指示されているにもかかわらず、 UIM が装着されていない場合に発生します。
FileNotAccessibleException - 引数 accessToken に対応するフォルダが存在しない状態でこのメソッドを呼び出したにもかかわらず、 ファイルシステム上のアクセス制限やメディアのライトプロテクト等に起因して、 フォルダを新規作成できなかった場合に発生します(ACCESS_DENIED)。
java.io.IOException - I/O エラーが発生した場合に発生します。