我在VSCode中有一个非常简单的项目,一个链接到单个app.js文件的index.html文件.
当我点击F5时,我想运行和调试这个迷你网站.
如何配置VSCode以在浏览器中打开index.html,然后允许我在app.js中设置断点,这些断点将由我在浏览器中与应用程序的交互触发?
在Visual Studio中,这将"正常工作",因为它会启动自己的Web服务器IIS Express.在VSCode中,我不确定如何设置launch.json和/或tasks.json来创建一个简单的node.js Web服务器并提供index.html.
我已经看到了调试javascript应用程序的一些示例,例如这个launch.json:
{
"version": "0.1.0",
"configurations": [
{
"name": "Launch Bjarte's app",
"type": "node",
"program": "app.js",
"stopOnEntry": true,
"args": [],
"cwd": ".",
"runtimeExecutable": null,
"runtimeArguments": [],
"env": {},
"sourceMaps": false
},
{
"name": "Attach",
"type": "node",
"address": "localhost",
"port": 5858,
"sourceMaps": false
}
]
}
Run Code Online (Sandbox Code Playgroud)
这将运行js文件,但我不明白我如何与应用程序进行交互.
我有一个应用程序,通过使用AudioManager将手机静音,并使用此代码将铃声模式设置为静音:
AudioManager audioManager =
(AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
try {
audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT)
} catch (Exception e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
这适用于Android 6,但现在使用Android 7,我收到以下错误:
System.err: java.lang.SecurityException: Not allowed to change Do Not Disturb state
System.err: at android.os.Parcel.readException(Parcel.java:1683)
System.err: at android.os.Parcel.readException(Parcel.java:1636)
System.err: at android.media.IAudioService$Stub$Proxy.setRingerModeExternal(IAudioService.java:962)
System.err: at android.media.AudioManager.setRingerMode(AudioManager.java:1022)
System.err: at controllers.SearchResultController.mutePhone(SearchResultController.java:185)
Run Code Online (Sandbox Code Playgroud)
有什么新的权限我需要要求才能使这项工作?
我查看了Android权限列表,但找不到任何相似的内容.
我正在尝试通过显示名称找到联系人.目标是打开此联系人并向其添加更多数据(特别是更多的电话号码),但我很难找到我想要更新的联系人.
这是我正在使用的代码:
public static String findContact(Context context) {
ContentResolver contentResolver = context.getContentResolver();
Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_FILTER_URI;
String[] projection = new String[] { PhoneLookup._ID };
String selection = ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + " = ?";
String[] selectionArguments = { "John Johnson" };
Cursor cursor = contentResolver.query(uri, projection, selection, selectionArguments, null);
if (cursor != null) {
while (cursor.moveToNext()) {
return cursor.getString(0);
}
}
return "John Johnson not found";
}
Run Code Online (Sandbox Code Playgroud)
我确实有一个名为"John Johnson"的联系人,但该方法始终返回"未找到".我也尝试用一个名字搜索一个联系人,这没什么区别.
我怀疑它的东西,错误的URI,选择或选择论,因为我无法找到搜索与给定的显示名称接触的任何例子在线,似乎显示名称是一种特殊的信息,例如从不同一个电话号码.
任何想法如何找到约翰逊?
更新:我发现了如何通过显示名称找到联系人:
ContentResolver contentResolver = context.getContentResolver();
Uri uri = Data.CONTENT_URI;
String[] projection …Run Code Online (Sandbox Code Playgroud) 我有一个使用以下代码阻止呼叫的应用程序:
TelephonyManager telephonyManager =
(TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
try {
Class<?> telephonyManagerClass =
Class.forName(telephonyManager.getClass().getName());
Method getITelephonyMethod =
telephonyManagerClass.getDeclaredMethod("getITelephony");
getITelephonyMethod.setAccessible(true);
Object iTelephony = getITelephonyMethod.invoke(telephonyManager);
Class<?> iTelephonyClass = Class.forName(iTelephony.getClass().getName());
Method endCallMethod = iTelephonyClass.getDeclaredMethod("endCall");
endCallMethod.setAccessible(true);
endCallMethod.invoke(iTelephony);
} catch (ClassNotFoundException e) {
// ClassNotFoundException
} catch (NoSuchMethodException e) {
// NoSuchMethodException
} catch (IllegalAccessException e) {
// IllegalAccessException
} catch (InvocationTargetException e) {
// InvocationTargetException
} catch (Exception e) {
// Some other exception
}
Run Code Online (Sandbox Code Playgroud)
要工作,这需要AndroidManifest.xml中的android.permission.MODIFY_PHONE_STATE。在Android M和N中,我还必须询问用户权限Manifest.permission.CALL_PHONE。
但现在在Android 8 / Android O中,以上代码因InvocationTargetException而失败:需要MODIFY_PHONE_STATE权限
我发现了以下与此相关的StackOverflow帖子:Android-为什么endCall方法有效,但是answerRingingCall不起作用?
在这里建议我可以在PhoneInterfaceManager上使用反射(而不是像上面所做的ITelephony一样),并在end call命令中使用私有方法sendRequestAsync(int命令),并通过这样做来解决安全问题在endCall()方法中。 …
我有一个应用程序,在过去几年只有微小的变化.昨天我向Google Play发布了一个修正错误,并注意到我的应用突然需要5个新权限:
我没有对AndroidManifest.xml进行任何更改,因此没有列出这5个权限.
我正在使用Google的结算库(com.android.billing)进行应用内购买.这可能已由Android Studio自动更新.
我也升级了这些库:
有谁知道为什么会这样?
更新与答案
@ ahmad-nawaz是对的,他的回答让我想出了这一点.这是我的问题的更详细的答案:
需要额外权限的图书馆是Google Play服务.
在Google Play Services 6.5及更高版本中,您可以(并且可能应该)定义您需要的特定API,而不是仅导入整个包.
就我而言,我只是使用了play-services-analytics,所以我在build.gradle中更改了它
compile 'com.google.android.gms:play-services:7.5.0'
Run Code Online (Sandbox Code Playgroud)
对此
compile 'com.google.android.gms:play-services-analytics:7.5.0'
Run Code Online (Sandbox Code Playgroud)
在此更改之后,原始问题中提到的所有5个权限都消失了.
以下是Google Play服务的各个API的完整列表:https://developers.google.com/android/guides/setup#split
我有一个小的.NET Core项目,其中完整的构建/测试/部署过程在Cake脚本中处理.
我有一个运行蛋糕脚本的powershell脚本.
在本地运行脚本时,我得到每个失败的xUnit测试的结果,但是当通过TeamCity的PowerShell运行程序运行相同的脚本时,我没有得到每个测试的结果,只是失败测试数量的摘要.
蛋糕任务:
Task("Test")
.IsDependentOn("Clean")
.Does(() =>
{
GetFiles("./tests/**/*.csproj")
.ToList()
.ForEach(file => DotNetCoreTest(file.FullPath));
});
Run Code Online (Sandbox Code Playgroud)
这个Cake代码在引擎盖下运行"dotnet test".
在构建服务器上的PowerShell中手动运行脚本时,我得到以下输出:
Test run for c:\project\myproject\tests\Web.Tests\bin\Debug\netcoreapp2.0\Web.Tests.dll(.NETCoreApp,Version=v2.0)
Microsoft (R) Test Execution Command Line Tool Version 15.7.0
Starting test execution, please wait...
[xUnit.net 00:00:00.7397647] Web.Tests.UnitTest1.Test1[FAIL]
Error Message:
Assert.False() Failure
Expected: False
Actual: True
Test Run Failed.
Total tests: 2. Passed: 1. Failed: 1. Skipped: 0.
Test Run Failed.
Run Code Online (Sandbox Code Playgroud)
使用TeamCity的PowerShell运行程序运行相同的脚本时,我得到了这个:
[14:27:45] [Step 1/1] Test run for D:\TeamCity\buildAgent\work\7ff27c4721bc4a68\tests\Web.Tests\bin\Release\netcoreapp2.0\Web.Tests.dll(.NETCoreApp,Version=v2.0)
[14:27:45] [Step 1/1] Microsoft (R) Test Execution Command Line …Run Code Online (Sandbox Code Playgroud) 我尝试了多种方法来限制 Google 自适应广告单元的最大高度。
我尝试在包含的 div 和 ins 标签上设置高度和最大高度。
我还尝试设置 data-ad-format="horizontal" 而不是默认值“auto”。
<div style="height: 60px; max-height: 60px">
<!-- Responsive center ad -->
<ins class="adsbygoogle"
style="height: 60px; max-height: 60px;"
data-ad-client="ca-pub-xxx"
data-ad-slot="xxx"
data-ad-format="horizontal"
data-full-width-responsive="true"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
</div>
Run Code Online (Sandbox Code Playgroud)
这些方法都没有任何效果,结果始终是移动设备上的 300x250 像素广告。
我做错了什么?移动设备有单独的设置吗?这一切都适用于桌面设备,但我无法限制移动设备上的广告高度。
我有一个简单的 .NET Core 2.0 项目。这是配置方法:
public void Configure(IApplicationBuilder app, IHostingEnvironment environment)
{
app.UseStatusCodePagesWithReExecute("/error/{0}.html");
app.UseStaticFiles();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller}/{action?}/{id?}",
defaults: new { controller = "Home", action = "Index" });
});
}
Run Code Online (Sandbox Code Playgroud)
当我输入无效 url 时,/error/404.html 会按预期显示,但浏览器会收到 200 状态代码,而不是预期的 404 状态。
我究竟做错了什么?我可以不使用静态 html 文件作为错误页面吗?
我正在使用基于Lucene.net的搜索引擎在EPiServer网站上工作.
我有查询只查找具有某个pageTypeId的页面.现在我想做相反的事情,我想只找到不是某个pageTypeId的页面.那可能吗?
这是用于创建查询以仅搜索pageTypeId为1,2或3的页面的代码:
public BooleanClause GetClause()
{
var booleanQuery = new BooleanQuery();
var typeIds = new List<string>();
typeIds.Add("1");
typeIds.Add("2");
typeIds.Add("3");
foreach (var id in this.typeIds)
{
var termQuery = new TermQuery(
new Term(IndexFieldNames.PageTypeId, id));
var clause = new BooleanClause(termQuery,
BooleanClause.Occur.SHOULD);
booleanQuery.Add(clause);
}
return new BooleanClause(booleanQuery,
BooleanClause.Occur.MUST);
}
Run Code Online (Sandbox Code Playgroud)
我想要创建一个查询,我在其中搜索pageTypeId不是"4"的页面.
我尝试用"MUST_NOT"代替"SHOULD"和"MUST",但这不起作用.
感谢@ goalie7960快速回复.这是我修改的代码,用于搜索除某些选定页面类型之外的任何内容.此搜索包括除pageTypeId"1","2"或"3"之外的所有文档:
public BooleanClause GetClause()
{
var booleanQuery = new BooleanQuery();
booleanQuery.Add(new MatchAllDocsQuery(),
BooleanClause.Occur.MUST);
var typeIds = new List<string>();
typeIds.Add("1");
typeIds.Add("2");
typeIds.Add("3");
foreach (var typeId in this.typeIds)
{
booleanQuery.Add(new TermQuery( …Run Code Online (Sandbox Code Playgroud)