0

问题一:

我正在尝试使用 python 和 WebView 制作一个 android 应用程序。

我想知道我是否可以获得一个 python 变量并将其发送到 html 并将它们保存在 javascript 中的一个变量中。

我试过这个但不起作用:

脚本.py

import android
import os, sys


ruta_del_proyecto = os.path.dirname(os.path.realpath(__file__))

droid = android.Android()
droid.webViewShow(ruta_del_proyecto + '/ui/prueba.html?ruta_del_proyecto=5')

print ruta_del_proyecto + '/ui/prueba.html?ruta_del_proyecto=5'

prueba.html

<html>
    <!--urta cel: file:///sdcard/sl4a/scripts/test1/ -->
  <head>
    <title>prueba</title>
    <script>
        var droid = new Android(); 

        function getUrlVars() {
        var vars = {};
        var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) {
            vars[key] = value;
        });
        return vars;
        }

        var ruta_del_proyecto = getUrlVars()["ruta_del_proyecto"];

        alert (ruta_del_proyecto);
    </script>
  </head>
  <body>
  </body>
</html>

问题2:

当我使用 "The Android Java IDE (AIDE)" 将 script.py 放入 APK,然后安装并打开时,WebView 无法打开

python 代码已执行,但 WebView 未打开

任何想法?

4

1 回答 1

0

你可以做一个简单的黑客攻击。Webkit WebView 具有在页面加载后触发的“load-finished”事件,之后您可以执行 JavaScript 函数:

def on_load_finished(webview, frame):
    browser.execute_script('your-js-function('+yourVariable+');')

browser = webkit.WebView()
browser.connect("load-finished", on_load_finished)

请记住,您可以通过使用 json 模块将字典序列化并在 JS 中反序列化它们来将字典作为参数传递!

于 2012-12-17T12:07:40.057 回答