monaca/AndroidでWebViewで表示中の外部ページからローカルの音ファイルを再生したい

投稿者: Anonymous

monaca/AndroidのWebViewで表示中の外部Webページのjavascriptから
アプリローカルにある音ファイルを指定して鳴らす方法はありますでしょうか。

MediaAPIを使用しようとすると、表示したWebページでは
new Media() は定義されておりませんのでエラーになります。

Mediaプラグインよりjsファイルを取り出し、Webページ内でロードさせますと
上記エラーは出なくなりますが、ローカルの音ファイルのアドレスを指定して読み込ませた所
読み込むことが出来ませんとエラーになります。

何か方法はありますでしょうか。
宜しくお願い致します。

解決

セキュリティ的な問題もありますので仰る方法ではありません。

まず、ローカルの絶対パスは”file:///”になりますが、
“file:///”パスは外部からはSecurityErrorではじかれます。

そして前者の理由からローカルのスクリプトを読めません。
cordovaはスクリプトを経由してネイティブのプラグインを呼びだすので、
MediaAPIを呼び出すことは出来ません。
同じ理由でローカルの音声ソースを参照することも出来ません。

ですので、どうしてもローカルと外部のページを共存して読み込みたいのであれば
iframeを使用するか、外部ソースを読み込んで表示するなどして、
ローカルのページの中で外部ページを表示するしかないのではないでしょうか?


追記
ふと、思いついたのですが、
InAppBrowserを使用してローカルと共存も出来そうな気もします。
InAppBrowserのイベントからURLを取得できるので
リクエストやハッシュなどを利用してURLからローカルにコマンドを送る方法ですね。

ただ、前述のiframeの方法もですが危険を伴います。
アプリから指定するページ以外からコマンドを送られた場合、
アプリをクラックされる恐れがあるからです。

外部ページを表示したい意図が分からないので実現方法として思い浮かぶのはコレくらいですね。

回答者: user10259

Leave a Reply

Your email address will not be published. Required fields are marked *