[心缘地方]同学录
首页 | 功能说明 | 站长通知 | 最近更新 | 编码查看转换 | 代码下载 | 常见问题及讨论 | 《深入解析ASP核心技术》 | 王小鸭自动发工资条VBA版
登录系统:用户名: 密码: 如果要讨论问题,请先注册。

[备忘]phonegap,即Cordova,远程网页不能响应cordova的api的解决办法。

上一篇:[转帖]spring mvc接收表单数据,到多个bean对象。
下一篇:[备忘]cordova,android工程,config.xml备忘

添加日期:2015/10/29 22:46:47 快速返回   返回列表 阅读5146次
按官方http://cordova.apache.org/
文档,使用命令行生成工程后,把CordovaLib工程和你的app工程导入eclipse里,

然后在CordovaLib工程下,找到

org.apache.cordova.CordovaBridge这个类,



            //if (pluginManager.shouldAllowBridgeAccess(origin)) {
                // Enable the bridge
                int bridgeMode = Integer.parseInt(defaultValue.substring(9));
                jsMessageQueue.setBridgeMode(bridgeMode);
                // Tell JS the bridge secret.
                int secret = generateBridgeSecret();
                return ""+secret;
            //} else {
            //    Log.e(LOG_TAG, "gap_init called from restricted origin: " + origin);
            //}
            //return "";


把if判断那里注释掉几行。

它这里调用了这个方法:



    public boolean shouldAllowBridgeAccess(String url) {
        for (PluginEntry entry : this.entryMap.values()) {
            CordovaPlugin plugin = pluginMap.get(entry.service);
            if (plugin != null) {
                Boolean result = plugin.shouldAllowBridgeAccess(url);
                if (result != null) {
                    return result;
                }
            }
        }

        // Default policy:
        return url.startsWith("file://");
    }


它循环看所有插件,是否允许访问该url,貌似是有一个同意,就通过。
结果,这里一个插件都没同意,其实是没覆盖shouldAllowBridgeAccess方法,
结果走了最后的file://的判断,即只有本地app里的文件允许访问。

所以,上面那里,直接注释掉,就OK了。
app直接访问远程网页,里面的js调用也可以被响应了。
啊哈哈~~~
===========================
其实,不必这么改,在config.xml里
直接指定<content src="http://xxx.com/m/" />
这样的远程地址即可。
我用的是cordova 5.3.3版本。
 

评论 COMMENTS
没有评论 No Comments.

添加评论 Add new comment.
昵称 Name:
评论内容 Comment:
验证码(不区分大小写)
Validation Code:
(not case sensitive)
看不清?点这里换一张!(Change it here!)
 
评论由管理员查看后才能显示。the comment will be showed after it is checked by admin.
CopyRight © 心缘地方 2005-2999. All Rights Reserved