我正在更新当前使用该权限的应用程序,并且根据新的 API 30 要求,现在也ACCESS_FINE_LOCATION需要该权限。ACCESS_BACKGROUND_LOCATION
在更新应用程序以添加此权限时,我还尝试使用新的 ActivityResultLauncher 回调方法来请求权限(https://developer.android.com/training/permissions/requesting#allow-system-manage-request-code)
使用以下方式启动单个请求似乎效果很好:
ActivityResultLauncher<String> launcher = registerForActivityResult(
new ActivityResultContracts.RequestPermission(), this::processPermissionResult);
launcher.launch(somePermission);
Run Code Online (Sandbox Code Playgroud)
但是,由于我需要两者,ACCESS_FINE_LOCATION并且ACCESS_BACKGROUND_LOCATION它需要一些额外的代码来跟踪多个回调的结果(因为每个请求都会生成自己的回调),以便在授予一个、两个或没有一个权限的情况下我可以采取适当的操作。
为了稍微简化一下,我希望改用该RequestMultiplePermissions方法,这样可以方便地为我提供一个回调,其中包含地图中的所有结果:
ActivityResultLauncher<String[]> launcher = registerForActivityResult(
new ActivityResultContracts.RequestMultiplePermissions(), this::processPermissionResult);
launcher.launch(new String[] {
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_BACKGROUND_LOCATION
});
Run Code Online (Sandbox Code Playgroud)
然而,我发现当我在同一个请求中同时请求这两个权限时ACCESS_FINE_LOCATION,ACCESS_BACKGROUND_LOCATION系统不再提示我任何一个权限对话框,并且回调对于这两个权限都返回 false。
但是,我可以通过给它一个包含单个权限的数组来单独请求这些权限RequestMultiplePermissions,然后使用与使用单个RequestPermission调用相同的方法多次调用 launch ,这将起作用。
似乎在ACCESS_FINE_LOCATION和ACCESS_BACKGROUND_LOCATION权限之间存在一些冲突/交互RequestMultiplePermissions?我能够取出ACCESS_BACKGROUND_LOCATION并使用不同的权限,例如WRITE_EXTERNAL_STORAGE,并且我会收到两个单独的权限对话框提示。
我是否误解了ACCESS_FINE_LOCATION和ACCESS_BACKGROUND_LOCATION权限?我不应该同时请求它们吗?
我正在使用一个执行一些Excel自动化的Web应用程序(我知道 - 不是首选解决方案).
我使用Excel 2007作为我的开发平台,但目标服务器使用的是Excel 2003.尽管在开发期间我明确选择了Excel 11,但在尝试加载到目标服务器上的Excel 12互操作后遇到了很多麻烦,我已经求助于使用后期绑定而不是早期绑定.
这使我能够实现Excel的实例化(我可以看到Excel进程在目标服务器上的任务管理器中启动).
但是我无法调用后期绑定的Workbooks对象的Open方法.它向我抛出这个错误:
"Unable to get the Open property of the Workbooks class"
Run Code Online (Sandbox Code Playgroud)
我一直在尝试一些不同的东西,并尝试了以下内容:
在所有三种情况下,Excel自动化都成功.只有当我部署ASP.NET应用程序时,才会出现此错误.在一个非常简化的形式,代码类似于:
Dim xlApp As Object 'Excel.Application
Dim xlBook As Object ' Excel.Workbook
xlApp = CreateObject("Excel.Application") 'New Excel.Application
xlBook = xlApp.Workbooks.Open("somefile.xls", , True, , , , , , , , , , , , False)
Run Code Online (Sandbox Code Playgroud)
有没有人对可能发生的事情有任何想法?我检查了用户Excel进程启动的用户,并且它与我成功运行Windows Forms .NET应用程序的用户相同.我已经打开Excel作为此用户清除所有初始设置的东西.
我在SELECT语句中使用用户定义的函数时遇到了一些有趣的行为.
我有几个存储过程从单个表中读取和清除数据.这些存储过程由多个源使用.
在我的观察中,似乎用户定义的函数有时是任意评估的,并不总是在执行它所使用的SELECT语句之后或期间立即进行评估.
例如,在存储过程中,我有一个select语句可能看起来像这样:
SELECT Something, MyFunction(Something) FROM Somewhere;
Run Code Online (Sandbox Code Playgroud)
然后调用另一个存储过程,该过程从表中清除数据.清除的数据量由另一个表控制,该表存储最大ID读取.这样清除不应该删除任何尚未被执行的存储过程的另一个实例读取的数据.
在我的测试代码中,MyFunction只返回表Somewhere中的行数.因此,我认为它应该始终等于SELECT语句返回的行数.但是,在我运行此存储过程的两个实例的情况下,我得到如下结果:
第一个查询实例:
Something MyFunction(Something)
--------- ---------------------
A 3
B 3
C 3
Run Code Online (Sandbox Code Playgroud)
第二个查询实例:
Something MyFunction(Something)
--------- ---------------------
A 0
B 0
C 0
Run Code Online (Sandbox Code Playgroud)
为什么第二个查询返回所有行,但在同一个表上运行的用户定义函数报告表中没有更多行?
无论如何,我可以确保第二个查询实例是一致的,因为用户定义的函数仍然看到父存储过程看到的相同数据?