ExternalInterface.addCallback не работает на Android для локальных файлов - PullRequest
1 голос
/ 05 апреля 2011

У меня следующая ситуация:

Код AS3:

...
Security.allowDomain("*");
ExternalInterface.addCallback("onZoom", onZoom);
...

public function onZoom(...

Код JavaScript:

...
alert(getFlashMovie("test"));
alert(getFlashMovie("test").onZoom);
...

А в тегах OBJECT и EMBED у меня есть allowScriptAccess="always"

Если я тестирую html-страницу со своего компьютера («file: ///path-to-file.html»), оба

alert(getFlashMovie("test"));
alert(getFlashMovie("test").onZoom);

дают мне правильный результат.

Если я вставлю html и swf в свою SDCard для телефона Android и загрузлю его в WebView следующим образом ...

webView = (WebView) findViewById(R.id.webViewMain);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setPluginsEnabled(true);
webView.setWebViewClient(new WebViewClient(){
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
    }
});

webView.setWebChromeClient(new WebChromeClient());
webView.loadUrl("file:///sdcard/test/test.html");

... тогда alert(getFlashMovie("test").onZoom); даст мне "undefined".

Если я перенесу html и swf на веб-сервер и загрузлю с webView.loadUrl("http:/mydomain.com/test/test.html");, это сработает.

Я сделал еще одну попытку с этим примером: http://0me.me/demo/adobeflash/ExternalInterface.call/demo.html

Это работает, если я загружаю его с этого URL, не работает, если я копирую этот HTML-файл (и соответствующий SWF-файл) на мою SD-карту.Если я скопирую тот же файл (и swf) на свой компьютер и протестирую его локально, там он будет работать.

Так что кажется, что флэш-плеер для компьютера позволяет ExternalInterface.addCallback даже для локальных файлов (file: ///...) в то время как флеш-плеер для Android 10.2 этого не делает.

До сих пор я не пробовал устанавливать локальный веб-сервер на свой телефон Android и загружать его оттуда, но я бы по возможности избегал такого решения,Может кто-то помочь мне, пожалуйста?Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...