小编jty*_*ann的帖子

在webview中加载本地javascript文件的问题

我有一个困扰我好几天的问题.事实证明,这是一个Android故障,已经提交,确认,并希望将来的版本中修复.现在我找到了一个适合我的解决方案,并将在下面提供,但解决方案并不完美,因为它涉及编辑手机间隙源.主要是我的问题是,是否有人可以找到更好的解决方案来解决这个问题.

问题:
当您尝试在Android 3.0+上的WebView中加载页面时出现故障.问题是,如果该页面引用任何本地javascript文件,则无法将查询数据附加到URL.基本上

这有效:
<script type="text/javascript" src="StaticJS.js"></script>

这不起作用:
<script type="text/javascript" src="StaticJS.js?var=val"></script>

为什么有人想要这样做,因为文件显然无法对查询值做任何事情?好吧,我有一个通过JSONP加载设置文件的phonegap应用程序,但是如果没有指定设置文件,它默认为本地文件.所以是的,文件无法处理查询数据,但使用相同的文件格式和加载结构会很好.


解决方案1(非PhoneGap)

因此,如果目标android平台是11(Honeycomb)或更高,那么有一个简单的解决方案.(只要您小心并且不使用任何较低API级别中不存在的任何方法,此代码将在<11 apis上运行,但您仍需将11设置为目标)

基本上,您将WebViewClient添加到WebView,该WebView使用shouldInterceptRequest方法拦截附加了查询数据的本地js文件的加载.

import java.io.IOException;
import java.io.InputStream;

import android.content.res.AssetManager;
import android.webkit.WebResourceResponse;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class PatchingWebViewClient extends WebViewClient{

    AssetManager am;

    public PatchingWebViewClient(AssetManager am){
        this.am = am;
    }

    @Override
    public WebResourceResponse shouldInterceptRequest (WebView view, String url){
        if(url.indexOf("file:///android_asset") == 0 && url.contains("?")){
            String filePath = url.substring(22, url.length());
            filePath = filePath.substring(0, filePath.indexOf("?"));
            try {
                InputStream is = am.open(filePath);
                WebResourceResponse wr = new WebResourceResponse("text/javascript", "UTF-8", is);
                return wr; …
Run Code Online (Sandbox Code Playgroud)

android callback android-3.0-honeycomb android-4.0-ice-cream-sandwich cordova

13
推荐指数
1
解决办法
6876
查看次数

Twitter O-Auth Callback网址

我在Twitter的oauth身份验证和使用回调网址时遇到问题.

我在php编写代码并使用twitter wiki引用的示例代码,http://github.com/abraham/twitteroauth

我得到了那个代码,并尝试了一个简单的测试,它工作得很好.但是我想以编程方式指定回调网址,示例不支持.

所以我很快修改了getRequestToken()方法来接受一个参数,现在它看起来像这样:

function getRequestToken($params = array()) {
  $r = $this->oAuthRequest($this->requestTokenURL(), $params);
  $token = $this->oAuthParseResponse($r);
  $this->token = new OAuthConsumer($token['oauth_token'], $token['oauth_token_secret']);
  return $token;
}
Run Code Online (Sandbox Code Playgroud)

我的电话看起来像这样

$tok = $to->getRequestToken(array('oauth_callback' => 'http://127.0.0.1/twitter_prompt/index.php'));
Run Code Online (Sandbox Code Playgroud)

这是我做的唯一更改,重定向就像一个魅力,但是当我尝试使用我新授予的访问权限尝试拨打电话时,我收到错误.我收到"无法验证你"错误.此外,应用程序实际上从未实际添加到用户授权的连接中.

现在我阅读了规范,我认为我所要做的就是在获取请求令牌时指定参数.在oauth和twitter上多一点经验丰富的人可能会帮我一个忙吗?谢谢

twitter oauth

8
推荐指数
1
解决办法
2万
查看次数

如何从.NET中具有重复列名的连接表中读取SELECT*的结果

我是一名PHP/MYSQL开发人员,慢慢地进入C#/ MSSQL领域,当我在阅读连接两个表的MSSQL查询时遇到C#问题.

给出两个表:

表A:

int:id
VARCHAR(50):name
int:b_id
Run Code Online (Sandbox Code Playgroud)

表B:

int:id
VARCHAR(50):name
Run Code Online (Sandbox Code Playgroud)

并给出了查询

SELECT * FROM TableA,TableB WHERE TableA.b_id = TableB.id;
Run Code Online (Sandbox Code Playgroud)

现在在C#中我通常以下列方式读取查询数据:

SqlDataReader data_reader= sql_command.ExecuteReader();
data_reader["Field"];
Run Code Online (Sandbox Code Playgroud)

除了在这种情况下,我需要区别于TableA的名称列和TableB的名称列.

在PHP中,我只是相应地要求字段"TableA.name"或"TableB.name",但是当我尝试类似的东西时

data_reader["TableB.name"];
Run Code Online (Sandbox Code Playgroud)

在C#中,我的代码错误了.现在我知道这可以通过谷歌搜索或在这个网站上搜索来解决,但我最难找到适当的搜索词找到答案.

那么有人可以指点我的写作方向,或者给我一个关于如何在C#中读取多个表的查询的建议?

c# join

3
推荐指数
1
解决办法
5275
查看次数