環境:GalaxyS、PhoneGap2.4.0
現象:
PhoneGapアプリ内のJavaScriptで、navigator.camera.getPicture() (オプショ
ン:Camera.PictureSourceType.PHOTOLIBRARY)として、ギャラリーからファイル選択すると、選択後にファイルパスが取得できずエラーになる。(選択失敗扱いになる)
原因:
PhoneGapのバグ(仕様?)で、Android側のファイル名に空白が入っていると、ファイル選択後、ファイルパスが取得できずエラーになるようだ。
GalaxySのカメラで撮影して保存した場合のデフォルトファイル名の形式は、
「YYYY-MM-DD HH24.MI.SS.jpg」でスペースが入っているため、そのままのファイル名だと必ずエラーになる。
ファイル名を端末内で事前に変更しておくと、無事選択できた。
navigator.camera.getPicture() (オプション:Camera.PictureSourceType.CAMERA)として、アプリ内のカメラで撮影後、そのままそのファイルを使う場合はエラーにならない。これはアプリ内のカメラで撮影する場合の一時ファイル名が、通常とは違う形式だからだと推測される。
別の機種ではファイル名の形式が違うせいか発生しなかった。
例.GalaxyS3のファイル名の形式は「YYYYMMDD_HH24MISS.jpg」(アンダーバーになっている)ので問題なく動作した。
回避策:
PhoneGapの問題のため回避不可能と思われる・・・。
アプリの作りで回避するしかなさそう。
補足:
同じところでハマってそうな人がちらほら
http://osdir.com/ml/phonegap/2013-01/msg01141.html
https://groups.google.com/forum/#!topic/phonegap/-8YIQndur94