前回、端末に画像や音声ファイルをAndroidなどの端末にダウンロードするプラグインを紹介したので、今回は端末内のファイルを開く方法について。
使用したプラグインは「cordova-plugin-file-opener2」です。
GitHubは下記からご確認ください。
GitHub – pwlin/cordova-plugin-file-opener2: A File Opener Plugin for Cordova
https://github.com/pwlin/cordova-plugin-file-opener2
プラグインの導入は、例のごとく下記のコマンドを実行します。
cordova plugin add cordova-plugin-file-opener2
使い方はとても簡単で、下記のように開きたい端末内のファイルのパスと、その MIMEタイプを指定するだけ。
cordova.plugins.fileOpener2.open(
[開きたいファイルのパス],
[ファイルのMIMEタイプ],
{
error : function(){
// ファイル展開 失敗時に実行する処理
},
success : function(){
// ファイル展開 成功時に実行する処理
}
}
);
ファイルのパスは、/storage/emulated/0/Pictures/[ファイル名].jpg のような感じで指定します。
こちらのパスの値については、私の環境では、ファイルダウンロードに成功した時に取得できる file:///storage/emulated/0/Pictures/[ファイル名].jpg から、file:// を取ったものを使っています。
ご覧の方の環境に合うかは分かりませんが、参考にコードを記載しておきます。
window.document.addEventListener('DOWNLOADER_downloadSuccess', function(event) {
const data = event.data;
const filePath = data[0].nativeURL.replace(/^file:\/\//, '');
if (fileMIMEType !== null) {
window.cordova.plugins.fileOpener2.open(
filePath,
'image/png',
{
error: function() {
// ファイル展開失敗時の処理
},
success: function() {
// ファイル展開成功時の処理
},
}
);
}
});
こちらはとりあえずAndroidで動作するようにしてあるだけなので、iOS には対応していません。これからやります。
なお、MIMEタイプについても、とりあえず png 形式のみ対応なので、もし扱うファイル種類が定義されていない場合は、拡張子で jpg、gif くらいは判断できるようにしたほうが良さそう。
ちなみに、動作確認中に、うっかり音楽ファイル(mp3)を imgae/png で開いてしまいましたが、エラーにはならず、ファイルが壊れているような表示になりました。
その後、きちんと audio/mp3 にしたら、開くアプリの選択肢が表示され、再生もできるようでしたので、音声ファイルも問題なさそうです。
以上、Android端末内のファイルをアプリで開く方法でした。
とりあえず、Androidに問題がなかったので、iOS でも使えるように修正していきたいと思います。