小编Ale*_*kin的帖子

navigator.geolocation.getCurrentPosition()永远不会在Android上的WebView中返回

我正在尝试访问Android WebView中提供的HTML Geolocation API(使用SDK版本24).

主要问题是JavaScript的调用navigator.geolocation.getCurrentPosition()永远不会返回(既没有错误,也没有位置数据),而在应用程序端,我检查权限并使用android.webkit.GeolocationPermissions.Callback类正确地将它们传递给WebView .

更新:这里只是澄清一下,"永不返回"我的意思是没有任何太多提供的回调navigator.geolocation.getCurrentPosition(success, error)被调用.

在我为测试它而构建的示例应用程序(只有一个托管WebView的小活动)我在清单中声明权限并在App start上正确请求它们.我看到提示,可以授予或拒绝位置信息的许可.

表现:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
Run Code Online (Sandbox Code Playgroud)

主要形式的代码:

public boolean checkFineLocationPermission() {
    if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
            != PackageManager.PERMISSION_GRANTED) {

        if (ActivityCompat.shouldShowRequestPermissionRationale(this,
                Manifest.permission.ACCESS_FINE_LOCATION) && !mIsPermissionDialogShown) {
            showPermissionDialog(R.string.dialog_permission_location);
        } else {
            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
                    PERMISSION_ACCESS_FINE_LOCATION);
        }
        return false;
    } else {
        return true;
    }
} 
Run Code Online (Sandbox Code Playgroud)

我可以在运行时使用期间检查权限Context.checkSelfPermission(),我看到相应的权限被授予我的应用程序.

然后我尝试在WebView控件中打开一个网页.我在设置中启用了所有必需的选项:

    mWebSettings.setJavaScriptEnabled(true);
    mWebSettings.setAppCacheEnabled(true);
    mWebSettings.setDatabaseEnabled(true);
    mWebSettings.setDomStorageEnabled(true);
    mWebSettings.setGeolocationEnabled(true);
    mWebSettings.setJavaScriptCanOpenWindowsAutomatically(true);
    mWebSettings.setSupportZoom(true);
Run Code Online (Sandbox Code Playgroud)

我使用以下 …

javascript android android-webview w3c-geolocation

18
推荐指数
1
解决办法
2226
查看次数

有没有办法在C++中访问外部作用域中的局部变量?

出于好奇:如果我有嵌套的范围,就像在这个示例C++代码中一样

using namespace std;

int v = 1; // global

int main (void)
{
    int v = 2; // local
    {
        int v = 3; // within subscope
        cout << "subscope: " << v << endl;
        // cout << "local: " << v << endl; 
        cout << "global: " << ::v << endl;
    }
    cout << "local: " << v << endl;

    cout << "global: " << ::v << endl;

}
Run Code Online (Sandbox Code Playgroud)

有没有办法使用"中间"范围(既不是全局也不是本地)v的值来访问变量2

c++ scope

15
推荐指数
3
解决办法
6509
查看次数

VB.Net和C#之间LINQ语法的差异

出于好奇,再一次:

在VB.Net中编写了几个项目后,我惊讶地发现C#和VB.NET LINQ用法之间存在一些细微差别.例如,如果我们想要按多个属性(列)对元素进行分组,我们需要显式创建一个新的匿名类型:

var procs = from c in Process.GetProcesses() 
            group c by new {c.BasePriority, c.Id} into d 
            select d;
Run Code Online (Sandbox Code Playgroud)

而在VB.NET中,更直接的语法已经做到了:

Dim b = From c In Process.GetProcesses()
        Group c By c.BasePriority, c.Id Into Group
        Select Group
Run Code Online (Sandbox Code Playgroud)

因此,不需要在这里创建一个带有"new"的类型.

还有什么区别?C#和VB.NET中的LINQ语法有什么好的比较吗?

c# linq vb.net c#-to-vb.net

14
推荐指数
1
解决办法
5818
查看次数

FParsec中的示例语法超出了样本范围?

我正在寻找一些用FParsec编写的示例语法,它将超出项目存储库中的示例.

我发现了这个非常好的GLSL语法,但这是我发现的唯一样本.我需要的是一种类似于C或JavaScript的语言的语法.

f# parsing parsec fparsec

12
推荐指数
1
解决办法
2066
查看次数

如何在我自己的代码中生成类似于FSI的F#类型签名?

如果使用F#Interactive Shell(FSI),则推断的表达式类型(签名)将与其值一起打印到控制台:

val it : int * string * float = (42, "Hello F#", 42.0)
Run Code Online (Sandbox Code Playgroud)

如何在我自己的代码中模仿相同的行为,例如将推断的类型作为F#表达式的字符串?

我不需要动态评估任何F#表达式,这些表达式在编译时是已知的,并且是我的(静态)F#代码的一部分.我需要这个功能才能在我的F#演示中模仿LINQPad中的FSI输出.

f# type-inference linqpad f#-interactive

11
推荐指数
1
解决办法
1734
查看次数

为过程或函数提供的参数数量不足cdc.fn_cdc_get_all_changes_

用于查询表中最新跟踪更改的看似有效的代码Fields:

DECLARE @Begin_LSN BINARY(10), @End_LSN BINARY(10)
SET @Begin_LSN = sys.fn_cdc_get_min_lsn('Fields')
SET @End_LSN = sys.fn_cdc_get_max_lsn()
SELECT * FROM cdc.fn_cdc_get_all_changes_ordering_Fields (@Begin_LSN, @End_LSN, N'all')
GO
Run Code Online (Sandbox Code Playgroud)

生成以下错误消息:

Msg 313, Level 16, State 3, Line 5
An insufficient number of arguments were supplied for the procedure or function cdc.fn_cdc_get_all_changes_ ... .
Run Code Online (Sandbox Code Playgroud)

但是,如果我检查实际值,它们似乎都是有效的(非空),查询

SELECT @Begin_LSN, @End_LSN, N'all';
Run Code Online (Sandbox Code Playgroud)

回报

0x00000000000000000000  0x00002594000002130001  all
Run Code Online (Sandbox Code Playgroud)

sql-server cdc sql-server-2008

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

Visual Studio 2013中的Windows菜单中缺少新的垂直选项卡组?

我刚刚转到Visual Studio 2013,我找不到垂直拆分代码窗口的方法,所以我有两个不同的文件并排.

在以前的版本中,我可以创建一个新窗口,然后通过从Windows菜单中选择" 创建新的垂直选项卡组"将其移动到新选项.

现在我只看到在此菜单中创建一个新的水平选项卡组,没有更多选项来创建垂直选项卡组.

是否在此版本的Visual Studio中删除了???

tabs visual-studio visual-studio-2013

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

使用OperatorPrecedenceParser解析FParsec的函数应用程序?

问题与类似,但我想使用OperatorPrecedenceParserin 解析带有函数应用程序的表达式FParsec.

这是我的AST:

type Expression =
  | Float of float
  | Variable of VarIdentifier
  | BinaryOperation of Operator * Expression * Expression
  | FunctionCall of VarIdentifier (*fun name*) * Expression list (*arguments*)
Run Code Online (Sandbox Code Playgroud)

我有以下输入:

board?create_obstacle(4, 4, 450, 0, fric)
Run Code Online (Sandbox Code Playgroud)

这是解析器代码:

let expr = (number |>> Float) <|> (ident |>> Variable)
let parenexpr = between (str_ws "(") (str_ws ")") expr

let opp = new OperatorPrecedenceParser<_,_,_>()

opp.TermParser <- expr <|> parenexpr

opp.AddOperator(InfixOperator("?", ws, 
  10, Associativity.Right, 
  fun left …
Run Code Online (Sandbox Code Playgroud)

f# parsing fparsec

7
推荐指数
1
解决办法
633
查看次数

如何在调试期间可视化Visual Studio 2010中的Graphics变量的内容?

我正在为我的应用程序开发渲染引擎,需要在调试会话期间可视化Graphics对象.我看了VS2010的Image Visualizers,就像这样或者这样,但它们只能看到Image对象,而我需要Graphics.这可能是什么解决方案?

此致,亚历山大.

debugging visual-studio-2010 debuggervisualizer

6
推荐指数
1
解决办法
820
查看次数

如何在不使用任何班次的情况下计算正位数?

在一次求职面试中,我曾经被要求计算位向量结构中的正数(即设置为"1")位数(如无符号整数或长整数).我的解决方案在C#中非常简单:

int CountBits(uint input)
{
   int reply = 0;
   uint dirac = 1; 
   while(input != 0)
   {
      if ((input & dirac) > 0) reply++;
      input &= ~dirac;
      dirac<<=1;
   }
   return reply;
}
Run Code Online (Sandbox Code Playgroud)

然后我被要求在不使用任何轮班的情况下解决任务:既不明确(如"<<"或">>")也不隐含(如乘以2).使用潜在的2行(如0,1,2,4,8,16等)的"暴力"解决方案也不会这样做.

有人知道这样的算法吗?

据我所知,它应该是一种或多或少的通用算法,它不依赖于输入位向量的大小.允许所有其他按位运算和任何数学函数.

algorithm bit-manipulation bitvector

6
推荐指数
1
解决办法
1041
查看次数