小编don*_*nea的帖子

不推荐使用HttpClient.getParams().我应该用什么呢?

我正在使用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)的方法,而不使用不推荐使用的方法,这对于从对象获取属性应该很简单.

java apache-httpclient-4.x

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

Android:处理耳机按钮事件和向MainActivity发送信息

这是我努力制作一个工作代码来处理耳机按钮事件的最佳方式.我阅读了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)

android headset

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

在 Wordpress.com 上使用 REST API 发帖 [错误 401,不允许]

我想在我的 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 域上发布非常简单的最后一个示例?

rest wordpress

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

正则表达式:包含一个单词,不包含另一个单词

我无法成功解决此问题: 找到一个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)

也不要依赖空格来约束每个单词。但是什么都没有。我几乎整天都在尝试,这很痛苦。

我使用 http://www.regular-expressions.info/refquick.html …

java regex

5
推荐指数
1
解决办法
1767
查看次数

Android"支持屏幕"不起作用?

我构建了一个应用程序,我试图用小屏幕排除设备.为此,我利用了清单中的支持屏幕元素.

<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 3.2+版本会发生什么.如果我将Android版本13+放在我的清单上,那么android:requiresSmallestWidthDp人们仍可以安装该应用程序,然后呢?
  • 其他大小属性是:android:compatibleWidthLimitDp,和android:largestWidthLimitDp.但他们都认为最大的"最小宽度"而不是我需要的最小宽度.

所以我的问题是,如何防止屏幕小于500像素或360 dpi的人安装我的应用程序?我可以吗?

android android-screen-support

5
推荐指数
1
解决办法
5473
查看次数

屏幕打开时更新 Android Widget

这个问题看起来很简单。

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() 播放闹钟。它在小部件内正常工作。但是当我打开和关闭屏幕时,什么也没有发生。

UPDATE II - Android 中的一个工作小部件

我将小部件的完整代码发布给需要它的人。

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)

events android android-widget

5
推荐指数
1
解决办法
3590
查看次数

我如何将`MyClass`添加到`List <?扩展MyClass>`

我有一个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的扩展包含子项列表.

java generics inheritance extends

4
推荐指数
1
解决办法
167
查看次数

Netbeans 9 - 打印 Unicode 字符

使用 Netbeans 9:

\n\n
Product 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\n
String 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\n

我可以采取什么方式呢?

\n

java netbeans utf-8 system.out netbeans-9

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

SPARQL:未解析的前缀名称:dbpprop:author

我正在运行此查询.它在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 sparql dbpedia

0
推荐指数
1
解决办法
671
查看次数

使用比较器和内部类进行 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 sorting inner-classes comparator

0
推荐指数
1
解决办法
2476
查看次数