26703


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

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

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

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


CC BY-SA 3.0
2016-06-13T05:26:54.163
26702
2016-06-13T06:59:44.470
2681
question
android monaca cordova
monaca/AndroidでWebViewで表示中の外部ページからローカルの音ファイルを再生したい


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

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

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

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

* * *

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

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

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


CC BY-SA 3.0
2016-06-13T06:29:49.853
26703
2016-06-13T06:59:44.470
2016-06-13T06:59:44.470
26702
answer