带有Web服务调用的Html5应用程序可在模拟器上运行,但不能在设备上运行

时间:2014-03-05 11:47:35

标签: javascript android html5 jsonp

我使用javascript在HTML5中开发了一款应用。我用json调用了php web服务。 现在我正在尝试为Android执行它。

该应用程序适用于模拟器上的Web服务,但无法从设备上的服务器加载文本和图像。

我尝试了很多解决方案,我在stackoverflow和其他链接上找到了,比如使用主机名,检查设备的wifi,清单文件中的INTERNET权限,使用WebView但它不起作用。

请帮忙。

//这就是我在eclipse中所做的。

public class MainActivity extends DroidGap {

    WebView webview;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.d("hello","start");

        webview = (WebView) findViewById(R.id.webview);
        WebSettings webSettings = webview.getSettings();
        webSettings.setJavaScriptEnabled(true);
        webview.setWebChromeClient(new WebChromeClient());

        webview.loadUrl("file:///android_asset/www/HTML/index.html");
        Log.d("After load", "url");

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}

获取图像和文本都是在javascript中完成的。它在浏览器和模拟器上都没有问题。但它在设备上失败了。

//这是我的json调用函数。

<script>
    function jsondata(data)
    {
        setTimeout(function () {
         var parsedata = JSON.parse(JSON.stringify(data));
         var main_category = parsedata["mainCategory"];

            for (var i = 0; i < main_category.length; i++) 
            {
                var menu = main_category[i];
                menu_id=menu['mcatid'];         

                var id = document.createElement("table");   

                if((i%2)==0)
                {

                   id.innerHTML+='<br><br><br><td><a href="#" onclick="selected_index('+menu_id+')"><img src='+menu['mcatimage']+'><br><hr color=#000;>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong><font face="DEVROYE">'+menu['mcattitle']+'<hr color=#000;></a></td></strong>';
                  document.getElementById("id_left").appendChild(id);
                }
                else
                {

                   id.innerHTML+='<br><br><br><tr><td><a href="#" onclick="selected_index('+menu_id+')"><img src='+menu['mcatimage']+'><br><hr color=#000;>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong><font face="DEVROYE">'+menu['mcattitle']+'<hr color=#000;></a></td></strong>';
                   document.getElementById("id_right").appendChild(id);
                }   
            }
            }, 2000); 
     }

    /*-------------calling web service-----------*/
    jsonp("http://hostname/maincategory.php?callback=jsondata");
</script>

以下是我从Web服务获取图像和文本并在HTML页面上显示的方式。 这有什么问题?

今天我尝试了很多方法,例如将<access origin="*"/>更改为<access origin=".*"/><access origin="http:hostname"/> 但没有任何效果。

1 个答案:

答案 0 :(得分:0)

我的应用程序现在也适用于设备。

android方面没有问题。我在javascript中使用了ajax而不是json。它也开始在设备上高效工作。