対象読者
- スマホアプリに挑戦したいと思っているWeb開発者
- アプリ開発をもっと楽にしたいと思っている方
- 業務スマホアプリを作る開発者
Androidでのファイル名に関する問題を解決するためのプラグイン
本題に入る前に、Androidでのメディアファイルのファイルパスに関するプラグインを紹介します。
Androidでは、画像ファイルなどのパスを取得すると、「content://」というスキームが使われます。このスキームはCordova上のJSやHTML上ではアクセスすることができないため、そのままでは使えません。そのため実体のファイルのパス、つまり、「file://」スキームで扱える形式になることが望ましいのですが、その変換を行うプラグインです。
今回紹介するカメラプラグインに限らず、Androidで既存のメディアファイルなどを扱う場合に同様の問題が発生することもあるので、その場合にはぜひ利用してみてください。
インストール方法
インストールするプラグインは、「cordova-plugin-filepath」です。インストールはリスト1のように行います。
$cordova plugin add cordova-plugin-filepath
プラグインの使い方
このプラグインはパスを変換するだけなので、とても簡単に利用することができ、リスト2に示すメソッドのみになります。
window.FilePath.resolveNativePath(filepath,successCallback, errorCallback)
表1で示すパラメータが指定できます。
パラメータ名 | 説明 |
---|---|
filepath | 変換するためのファイルパス(content://で始まる文字列を指定) |
successCallback | 変換に成功した場合のコールバック関数。変換されたファイルパスが引数に設定 |
errorCallback | 変換に失敗した場合のコールバック関数 |
実際の利用はリスト3のように使用します。
var filename = "content://...."; // 変換用のメソッド window.FilePath.resolveNativePath(filename, function(path){ // 引数(path)ではfile://への変換後のパス名が取得できる },function(err){ // エラー console.log(err.code + ":" + err.message); });
また、エラーが発生した場合は表2のようなプロパティを持つオブジェクトが取得できます。
プロパティ名 | 説明 |
---|---|
code | 値が0の場合にはパスの変換が失敗。1の場合にはファイルがローカルに存在 |
message | エラーが発生したときのエラーメッセージ |