質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Cordova

Cordovaは様々なデバイスで使うことができるオープンソースなモバイル用開発プラットフォームです。開発者に各デバイスの元のプラットフォームで開発する必要をなくし、HTML・JavaScript・CSSなどの一般的なウェブのテクノロジーを使ってすべてのデバイスで展開することができるモバイルのアプリケーションを生成することを可能にします。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Monaca

「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

Q&A

解決済

2回答

2510閲覧

Monacaでファイル操作プラグインを使用。Androidでのみディレクトリ、ファイルの取得ができない。

annpann

総合スコア12

Cordova

Cordovaは様々なデバイスで使うことができるオープンソースなモバイル用開発プラットフォームです。開発者に各デバイスの元のプラットフォームで開発する必要をなくし、HTML・JavaScript・CSSなどの一般的なウェブのテクノロジーを使ってすべてのデバイスで展開することができるモバイルのアプリケーションを生成することを可能にします。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Monaca

「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

0グッド

1クリップ

投稿2019/04/30 17:06

前提・実現したいこと

Monacaでファイル操作プラグイン(File API)を使用してディレクトリ内のファイルの表示を行おうとしています。
下記コードでiOSでは正常に動作しますが、Androidではエラーコード5(encoding error)となります。
https://teratail.com/questions/139343
にあるように期待と異なるパスが取得されているようですが、そのために生じている問題なのでしょうか。
エミュレータでの検証のため、実機でなら正常に動作するのか、しない場合はどのように修正すべきなのか御教授いただけないでしょうか。

該当のソースコード

javascript

1ons.ready(async () => { 2 // ディレクトリを取得 3 const dir = await getDir(); 4 // ディレクトリ内にあるファイルを取得 5 const files = await getFiles(dir); 6 // ファイルを一覧表示 7 showFiles(files); 8}); 9 10// ファイル一覧を表示 11const showFiles = (files) => { 12 const ary = []; 13 for (const file of files) { 14 if (!file.isFile) continue; 15 ary.push(` 16 <ons-list-item class="file"> 17 ${file.name} 18 </ons-list-item> 19 `); 20 } 21 $('#files').empty().html(ary.join('')); 22} 23 24// ローカルのファイル一覧を取得 25const getFiles = async (dir) => { 26 return new Promise((res, rej) => { 27 const reader = new DirectoryReader(dir.toURL()); 28 reader.readEntries(res, fail); 29 }); 30} 31 32// ディレクトリを取得 33const getDir = async () => { 34 return new Promise((res, rej) => { 35 const dir = `${cordova.file.dataDirectory}`; 36 resolveLocalFileSystemURL(dir, res, rej); 37 }); 38} 39 40function fail(error) { 41 alert('エラーが発生しました。エラーコード: ' + error.code); 42} 43 44 45

試したこと

https://docs.monaca.io/ja/reference/cordova_6.5/file/
リファレンスにあるAndroidのディレクトリはどれを試しても同様の結果でした

補足情報(FW/ツールのバージョンなど)

MonacaクラウドIDEで開発
Cordova のバージョンは 7.1.0 です
AndroidエミュレータBlueStacks(ver.4.70.0.1102:Samsung Galaxy S8 Plus)内でmonacaデバッガーで検証

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

https://docs.monaca.io/ja/reference/cordova_7.1/file/

古いものを見ているので、まずは↑を見ては?

投稿2019/04/30 23:13

oikashinoa

総合スコア2826

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

annpann

2019/05/01 02:58

回答ありがとうございます。 確認いたしましたが内容としては変わりがないようでした。
guest

0

自己解決

結局どうにもならなかったのでゼロからリファレンスに沿った記述に修正することで解決しました。
androidでは${cordova.file.dataDirectory}という記述が使えないということですかね。よくわからないままですが。

投稿2019/05/06 03:26

annpann

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

oikashinoa

2019/05/09 15:44

以下(const dir …)を修正したってことでしょうか? お手数ですがどのように変えたのか記載していただけると助かります。 // ディレクトリを取得 const getDir = async () => { return new Promise((res, rej) => { const dir = `${cordova.file.dataDirectory}`; resolveLocalFileSystemURL(dir, res, rej); }); }
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問