前回、端末に画像や音声ファイルを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 でも使えるように修正していきたいと思います。