Передайте и верните значения из javascript и android и используйте в качестве плагина разрыва телефона.

Я хочу создать плагин для телефона, который передает и возвращает значение между javascript и android.

Может ли кто-нибудь предложить какие-либо идеи о том, как это сделать?


person user1051599    schedule 24.01.2012    source источник


Ответы (2)


На самом деле, это не очень сложно. Здесь я покажу вам, как вызывать нативный код из javascript внутри страницы и наоборот:

Вызов собственного кода из веб-представления:
При создании веб-представления добавьте интерфейс javascript (в основном класс java, методы которого будут доступны для вызова через javascript в веб-представлении.

JavaScriptInterface jsInterface = new JavaScriptInterface(this);
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(jsInterface, "JSInterface");

Определение самого класса интерфейса javascript (это примерный класс, который я взял из другого моего ответа и открывает видео в собственном намерении)

public class JavaScriptInterface {
    private Activity activity;

    public JavaScriptInterface(Activity activiy) {
        this.activity = activiy;
    }

    public void startVideo(String videoAddress){
        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setDataAndType(Uri.parse(videoAddress), "video/3gpp"); // The Mime type can actually be determined from the file
        activity.startActivity(intent);
    }
}

Теперь, если вы хотите вызвать этот код из HTML страницы, вы предоставляете следующий метод:

<script>
    function playVideo(video){
        window.JSInterface.startVideo(video);
    }
</script>

Легко не так ли?

Вызов кода javascript из собственного кода:
Это также просто, предположим, что в коде HTML, загруженного в WebView, у вас определена функция javascript:

<script>
    function function(){
        //... do something
    }
</script>

Затем вы вызываете эту функцию через WebView в нативном коде следующим образом:

webView.loadUrl("javascript:function()");
person Boris Strandjev    schedule 24.01.2012
comment
Эй, спасибо, Борис: D Это то, что я именно ищу. Мне очень нравится, что вы написали подробно, очень красиво и просто. Jgd, дай Бог тебе здоровья :) - person Prax; 24.09.2012
comment
код вызова javascript из собственного кода работает, но как его изменить, чтобы вернуть значение из javascript в код java - person user280109; 11.12.2012
comment
@ user280109: Вам нужно добавить значения параметров в вызов. Вот пример: stackoverflow.com/a/4330642/1108032 - person Boris Strandjev; 11.12.2012
comment
@BorisStrandjev Как получить возвращаемое значение при вызове собственного кода из веб-представления? Представьте, что метод startVideo возвращает красивое видео!. Как я могу получить это «playVideo»? - person Dr.jacky; 24.02.2017
comment
@Mr.Hyde Что-то, что я могу придумать, это вызвать другой способ связи, родной для javascript, в вызываемом собственном коде (до завершения метода). Этот код javascript инициализирует переменные javascript необходимыми значениями. Может есть решение быстрее и лучше, но я его наизусть не знаю. - person Boris Strandjev; 24.02.2017
comment
@ user280109 Вы можете узнать alter it to return a value from the javascript to the java code? Является ли это возможным? - person Sam YC; 28.01.2020
comment
@GMsoF обратите внимание на мой метод startVideo, он уже делает это (URL-адрес видео заменяется с JS на java) - person Boris Strandjev; 28.01.2020

Вот руководство. для создания плагина PhoneGap. Также особенно важны инструкции для подключаемого модуля ChildBrowser. хорошо.

person Paul Beusterien    schedule 25.01.2012