我正在使用apache-httpclient-4.3.我会分析一个http请求,特别是查询字符串参数,但是
@Deprecated
public HttpParams getParams()
Deprecated. (4.3) use constructor parameters of configuration API provided by HttpClient
Run Code Online (Sandbox Code Playgroud)
我不确定这意味着什么.我应该使用一些配置API的构造函数参数(那是什么?HostConfiguration不再作为类提供).但是在构建阶段我直接通过url传递查询参数:
HttpGet request = new HttpGet("http://example.com/?var1=value1&var2=value2");
Run Code Online (Sandbox Code Playgroud)
我找不到从请求对象中读回参数(var1,var2)的方法,而不使用不推荐使用的方法,这对于从对象获取属性应该很简单.
这是我努力制作一个工作代码来处理耳机按钮事件的最佳方式.我阅读了Android开发人员指南,但这显然是错误的,因为他们要求开始监听注册类名.
am.registerMediaButtonEventReceiver(RemoteControlReceiver); // Wrong
Run Code Online (Sandbox Code Playgroud)
所以我查看其他示例以更正代码.例如,在这个问题中已经发布了许多秘密建议,我还尝试了其他代码,例如这个,以及MediaSession的另一个解决方案,并清理不需要的我写了这段代码:
我实现了RemoteControlReceiver类.显然,不需要静态内部类,事实上,请看这条评论:
public class RemoteControlReceiver extends BroadcastReceiver {
public RemoteControlReceiver() {
super();
}
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "EVENT!!", Toast.LENGTH_SHORT).show();
if (Intent.ACTION_MEDIA_BUTTON.equals(intent.getAction())) {
KeyEvent event = (KeyEvent) intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
if (KeyEvent.KEYCODE_MEDIA_PLAY == event.getKeyCode()) {
Toast.makeText(context, "EVENT!!", Toast.LENGTH_SHORT).show();
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后我在MainActivity onCreate(){ ...中注册了意图
AudioManager am = (AudioManager) this.getSystemService(Context.AUDIO_SERVICE);
ComponentName mReceiverComponent = new ComponentName(this, RemoteControlReceiver.class);
am.registerMediaButtonEventReceiver(mReceiverComponent);
Run Code Online (Sandbox Code Playgroud)
registerMediaButtonEventReceiver被弃用了......
在清单中我记录了过滤器,在活动标记之后:
<activity>
... …
Run Code Online (Sandbox Code Playgroud) 我想在我的 wordpress.com 网站之一(托管在免费 wordpress.com 平台上的 wordpress 网站)上发布文章。
端点,获取:https://public-api.wordpress.com/wp/v2/sites/donnadulcinea.wordpress.com/posts
带有 Basic-Auth 标头。请求正文(用于测试),
{"title":"New Rest Post"}
Run Code Online (Sandbox Code Playgroud)
回复:
{
"code": "rest_cannot_create",
"message": "Sorry, you are not allowed to create posts as this user.",
"data": {
"status": 401
}
}
Run Code Online (Sandbox Code Playgroud)
怎么了?我在哪里可以找到在 wordpress.com 域上发布非常简单的最后一个示例?
我无法成功解决此问题: 找到一个Java正则表达式,它可以识别包含一个单词但不包含另一个单词的String。
为了更清楚地举例说明,让我们检查我的句子中是否包含“方法”而不包含“有效”作为整个单词(这意味着它不必是另一个单词的一部分)。正则表达式匹配器应返回,例如:
This method was efficient. false (contains "method", but contains "efficient")
This method was unefficient. true (cont. "method" doesn't cont. "efficient")
This method was simple. true (cont. "method" doesn't cont. "efficient")
This routine is efficient false (cont. "efficient" but no "method")
Run Code Online (Sandbox Code Playgroud)
到目前为止,我尝试过的结果至少是最近的解决方案结果。
( method )(?!.*efficient.*) Almost there, but "unefficient" also triggers.
( method )(?!.* efficient .*) No. Now " method " doesn't trigger anymore.
((.*method.*)(?!.*efficient.*)) No. the absence of "efficient" doesn't trigger.
Run Code Online (Sandbox Code Playgroud)
因此,这似乎是单词精确匹配的问题。所以我也首先尝试了:
(.*\bmethod\b.*)(?!.*efficient.*)
Run Code Online (Sandbox Code Playgroud)
也不要依赖空格来约束每个单词。但是什么都没有。我几乎整天都在尝试,这很痛苦。
我构建了一个应用程序,我试图用小屏幕排除设备.为此,我利用了清单中的支持屏幕元素.
<supports-screens
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="false"
android:xlargeScreens="true"
android:requiresSmallestWidthDp="320" />
Run Code Online (Sandbox Code Playgroud)
正如开发者页面的链接所示:例如,典型的手机屏幕最小宽度为320dp.
前一天我注意到有小设备的人仍然提供差评,因为他们仍然可以下载应用程序,并且一些布局元素不会出现在屏幕上.当然,一种解决方案是调整布局,但此刻我的问题是另一个.
似乎android:requiresSmallestWidthDp
属性不起作用.事实上,我试图将其设置为700或更高,只是为了进行实验,并将其加载到商店,支持的设备数量不会改变!
我还将SDK的次要版本更改为13以防止与该属性的兼容性问题:
<uses-sdk
android:minSdkVersion="13"
android:targetSdkVersion="19" />
Run Code Online (Sandbox Code Playgroud)
其他属性运行良好,例如,如果我删除普通屏幕,支持的设备数量会下降.
我想删除dpi低于320的设备,但我不能.我无法理解我做错了什么.
有这样一句话:Google Play目前不支持此属性进行过滤(在Android 3.2上),因此如果您的应用程序不支持小屏幕,则应继续使用其他大小属性. 但:
android:requiresSmallestWidthDp
人们仍可以安装该应用程序,然后呢?android:compatibleWidthLimitDp
,和android:largestWidthLimitDp
.但他们都认为最大的"最小宽度"而不是我需要的最小宽度.所以我的问题是,如何防止屏幕小于500像素或360 dpi的人安装我的应用程序?我可以吗?
这个问题看起来很简单。
Android Widget 很有魅力,一切都很好。
我只希望当用户(在正确的时刻)打开其设备屏幕时更新 小部件内容。
我在互联网和文档中都找不到这方面的提示。这意味着我显然忽略了一些简单而重要的事情。
感谢 Murtaza 的回答,看起来很完美,但由于某种原因不起作用。我的小部件已经有一个接收器,所以我添加了建议的意图过滤器:
<receiver android:name=".MyWidget" >
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
<action android:name="android.intent.action.SCREEN_ON" />
<action android:name="android.intent.action.SCREEN_OFF" />
</intent-filter>
Run Code Online (Sandbox Code Playgroud)
在小部件类中,我重写了建议的函数:
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
playNotification(context);
} else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
playNotification(context);
}
}
Run Code Online (Sandbox Code Playgroud)
playNotification() 播放闹钟。它在小部件内正常工作。但是当我打开和关闭屏幕时,什么也没有发生。
我将小部件的完整代码发布给需要它的人。
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.content.Intent;
import android.media.Ringtone;
import android.media.RingtoneManager;
import android.net.Uri;
import android.widget.RemoteViews;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
import java.io.IOException; …
Run Code Online (Sandbox Code Playgroud) 我有一个Java类,其中包含扩展MyClass的Objects子项.
class MyClass {
List<? extends MyClass> items;
[...]
Run Code Online (Sandbox Code Playgroud)
出于某种原因,我无法将MyClass项插入此列表.我不明白为什么,以及如何绕过这个问题.例如:
void foo(){
items = new LinkedList<MyClass>(); // This is OK
items.add(new MyClass()); // Not allowed... why?
}
Run Code Online (Sandbox Code Playgroud)
编译器说" 类型List中的方法add(capture#1-of?extends MyClass)不适用于参数(MyClass)"
我真的不明白如何绕过这个问题,以及为什么编译器应该只接受一个必须扩展MyClass的类型.
注意:为什么我需要使用这种方法?因为我需要允许MyClass的扩展包含子项列表.
使用 Netbeans 9:
\n\nProduct Version: Apache NetBeans IDE 9.0 (Build incubator-netbeans-release-334-on-20180708)\nJava: 1.8.0_181; Java HotSpot(TM) 64-Bit Server VM 25.181-b13\nRuntime: Java(TM) SE Runtime Environment 1.8.0_181-b13\nSystem: Windows 10 version 10.0 running on amd64; UTF-8; en_EN (nb)\n
Run Code Online (Sandbox Code Playgroud)\n\n我希望能够打印:
\n\nString text = "\xe4\xbd\xa0\xe5\xa5\xbd\xef\xbc\x81";\nSystem.out.println(text);\n
Run Code Online (Sandbox Code Playgroud)\n\n结果是:
\n\n--- exec-maven-plugin:1.5.0:exec (default-cli) @ JavaApplication1 ---\n???\n
Run Code Online (Sandbox Code Playgroud)\n\n我已经添加-J-Dfile.encoding=UTF-8
到了配置/etc/netbeans.conf
中,还添加到了VM选项中。Sources 编码选项也设置为 UTF-8。\n过去版本的 Netbeans 没有问题,这里我发现无法显示 UTF-8 字符。
我可以采取什么方式呢?
\n我正在运行此查询.它在DBpedia(http://dbpedia.org/sparql)上运行正常,但它在我的Java代码中不起作用:
PREFIX res: <http://dbpedia.org/resource/>
PREFIX dbpedia-owl: <http://dbpedia.org/ontology/>
SELECT ?book
WHERE {
?book a dbpedia-owl:Book .
?book dbpprop:author ?author .
?author dbpprop:name ?name
FILTER regex(?name, "Agatha Christie", "i")
}
Run Code Online (Sandbox Code Playgroud)
事实上,正如查询验证器(http://www.sparql.org/query-validator.html)所述:
Line 7, column 9: Unresolved prefixed name: dbpprop:author
Run Code Online (Sandbox Code Playgroud)
为什么它在DBpedia中有效呢?DBpedia会自动添加缺少的前缀吗?我在哪里可以找到前缀使其在我的Java代码中工作?
鉴于 Java 类的这种组合:
public class OuterClass
{
public String field01;
public int field02;
public InnerClass innerField
// ...getters, setters
public class InnerClass
{
public int innerField01;
public BigDecimal innerField02;
// ...getters, setters
Run Code Online (Sandbox Code Playgroud)
我想按外部和内部字段对它们进行排序。现在,给定 a List<OuterClass> list
,我可以轻松地对其进行排序,例如field01
:
Collections.sort(list, Comparator.comparing(OuterClass::getField01));
Run Code Online (Sandbox Code Playgroud)
但我可以按哪种方式排序InnerClass.innerfield.innerfield01
呢?我试过
Collections.sort(list, Comparator.comparing(OuterClass::InnerField::innerField01));
Run Code Online (Sandbox Code Playgroud)
以及其他一些方法,但都没有成功。也许我应该以某种方式使用OuterClass::new
,但我不知道如何使用。
java ×6
android ×3
comparator ×1
dbpedia ×1
events ×1
extends ×1
generics ×1
headset ×1
inheritance ×1
netbeans ×1
netbeans-9 ×1
regex ×1
rest ×1
sorting ×1
sparql ×1
system.out ×1
utf-8 ×1
wordpress ×1