小编Phl*_*lip的帖子

通过HTTP表单通过MultipartEntityBuilder上传文件,并带有进度条

短版 - org.apache...MultipartEntity已被弃用,它的升级MultipartEntityBuilder,出现在我们的在线论坛代表性不足.我们来解决这个问题.如何注册回调,因此我的(Android)应用可以在上传文件时显示进度条?

长版 -这里的"失踪污垢简单的例子"的MultipartEntityBuilder:

public static void postFile(String fileName) throws Exception {
    // Based on: https://stackoverflow.com/questions/2017414/post-multipart-request-with-android-sdk

    HttpClient client = new DefaultHttpClient();
    HttpPost post = new HttpPost(SERVER + "uploadFile");
    MultipartEntityBuilder builder = MultipartEntityBuilder.create();        
    builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
    builder.addPart("file", new FileBody(new File(fileName)));
    builder.addTextBody("userName", userName);
    builder.addTextBody("password", password);
    builder.addTextBody("macAddress", macAddress);
    post.setEntity(builder.build());
    HttpResponse response = client.execute(post);
    HttpEntity entity = response.getEntity();

    // response.getStatusLine();  // CONSIDER  Detect server complaints

    entity.consumeContent();
    client.getConnectionManager().shutdown(); 

}  // FIXME  Hook up a progress bar!
Run Code Online (Sandbox Code Playgroud)

我们需要解决这个问题FIXME.(额外的好处是可中断上传.)但是(请纠正我是否我错了),所有在线示例似乎都不尽如人意. …

android file-upload http

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

我需要一个从左边截断的溢出,带有椭圆

简而言之,我有一个字段,其中最右边的数字是最重要的.(当然,这个领域来自我们的附属公司的系统,基于他们的主键,所以最左边的数字每个时期只改变一次!)

每个人都知道CSS提供了一个右截断"text-overflow:ellipsis;".如何(没有向服务器添加代码以通过字符串手术准备该字段)我们是否截断LEFT上的字段,并将"..."elipses放在LEFT上?

(CSS3没问题.)

css css3

24
推荐指数
2
解决办法
7667
查看次数

安卓。ApplicationProvider 去哪儿了?

我正在尝试运行此行:

Context context = ApplicationProvider.getApplicationContext();

https://developer.android.com/training/data-storage/room/testing-db#java等示例代码推荐使用。

但我不能导入 ApplicationProvider(我只是喜欢文档从不导入任何东西,假设你的编辑器会正确提示你......)。此行失败,并显示“错误:包 androidx.test.core.app 不存在”:

import androidx.test.core.app.ApplicationProvider;

那么ApplicationProvider去哪儿了?我正在尝试使用当前上下文来创建 Room 数据库:

        Context context = ApplicationProvider.getApplicationContext();
        db = Room.inMemoryDatabaseBuilder(context, TestDatabase.class).build();
        userDao = db.getUserDao();
Run Code Online (Sandbox Code Playgroud)

android android-testing

14
推荐指数
2
解决办法
5935
查看次数

Android Studio:“设备当前处于未知状态”

我有一个 Android 平板电脑和一个旧的 Linux 笔记本,我在那里开发了几个月的程序,没有出现任何故障。

然后我拿到了一个新的 Linux 笔记本,安装了 Android Studio,并尝试插入 Android 平板电脑。平板电脑永远不会出现在目标列表中;它只是说,“未知设备”。当我选择“设备连接疑难解答”时,向导会显示平板电脑的 ID,并带有神秘消息“设备当前处于未知状态”。

关闭并再次打开平板电脑的“USB 调试”选项并不能解决问题。当我拔下并重新插入 USB 时,平板电脑会发出声音,但不会发出请求,询问我是否接受此调试连接。

运行adb devices返回:

$ adb devices
List of devices attached
adb server version (41) doesn't match this client (39); killing...
* daemon started successfully
B007904026445   no permissions (user in plugdev group; are your udev rules wrong?); see [http://developer.android.com/tools/device.html]
Run Code Online (Sandbox Code Playgroud)

有小费吗?


再插拔一次 USB 终于给了我平板电脑上的请求者,请求允许通过这台笔记本进行调试。危机结束。

如何在不滥用 USB 电缆的情况下获得该请求者的实际答案会很好......

android-studio android-device-manager

14
推荐指数
2
解决办法
6412
查看次数

PyQt事件处理程序snarf异常

这是说明问题的代码:

from PyQt4 import QtGui
app = QtGui.QApplication([])
dialog = QtGui.QDialog()
button = QtGui.QPushButton('I crash')
layout = QtGui.QHBoxLayout()
layout.addWidget(button)
dialog.setLayout(layout)
def crash(): raise Exception('Crash!')
button.clicked.connect(crash)
button.click()
print 'I should not happen'
Run Code Online (Sandbox Code Playgroud)

当我运行它时,PyQt4为我处理错误.我的控制台显示"崩溃!"的堆栈跟踪 在其中,我看到'我不应该发生'.

这没有用,因为我已经交了一个包含许多处理程序的大型应用程序,我需要将所有错误强加到我的脸上(并进入我的 - 自动化测试).每次我运行时,错误都会逃脱我的网络,并且它们需要过多且无用的尝试:除了块,在每个处理程序中,只是为了捕获它们.

换句话说,我希望良好的代码非常好,而糟糕的代码则非常糟糕.没有粉刷.

如果已经提出这个问题,我会道歉,但是当我进行电子搜索时,我自然会让成千上万的新手询问基本的错误处理问题(或者更糟糕的是,我让新手询问如何关闭他们任性的异常!;)

如何覆盖PyQt4的默认错误处理,以便我自己传播或记录错误?请不要回答sys.excepthook,它会捕获PyQt4 无法捕获的错误.

exception-handling pyqt pyqt4

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

如何运行位于 android 模块内的单元测试?

[来自未来的注释,2021 年,在底部添加 - 他们缩短了答案]

下面我有一个具有上述结构的项目。

我可以愉快地在应用程序模块内很好地运行 uni 测试,但在 lib 模块上找到的单元测试不会运行,除非我手动右键单击 lib 模块内的 DummyDataTest.java 并单击 Android studio 内的运行单元测试。

有没有办法通过命令行自动运行位于我的 lib 模块中的单元测试?

现有的命令行 ./gradlew testDebug 仅运行位于应用程序模块内的单元测试。

提前致谢

JUnitTestProject
    app [module]
         src
             main
                 java
                     de.ivu.junittest.app
                         DummyModel.java
                         ...
                 ...
             test
                 java
                     de.ivu.junittest.app
                         DummyModelTest.java
                 ...
    lib [module]
         src
             main
                 java
                     de.ivu.junittest
                         DummyData.java
                         ...
                 ...
         test
                 java
                     de.ivu.junittest.app
                         DummyDataTest.java
                 ...
Run Code Online (Sandbox Code Playgroud)

java android unit-testing robolectric

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

./gradlew测试已连接AndroidTest会删除我的getFilesDir()文件夹

我正在将Room数据库写入getFilesDir()文件夹。(将数据库写到可移动SD卡上显然需要进行一些重大研究!)

当我手动运行我的应用程序时,我想写一些记录并将其保留在数据库中,因此不需要继续写它们。运行测试时,我将数据库名称从“ * .dat”切换为“ _test.dat”(以Ruby on Rails或Django的“ environments”系统为例)。测试可以自由删除记录。

当我手动镊子在Android Studio中运行每个测试时,此系统可以工作。但是,当我批量运行in中的所有内容时,将gradlew删除数据库的“ * .dat”版本。这意味着每次我手动测试时,我都必须不断地手动重新填充数据库。

gradlew擦除getFilesDir()文件夹内容的内部是什么?以及如何(不弄清楚如何使用“外部”存储),我会击败它吗?

代码样例可根据要求提供,但全都是通用的东西。切换到getExternalFilesDir()不能解决问题。说要尝试StackOverflow ./gradlew test connectedAndroidTest -x uninstallAndroidTest,但是没有uninstallAndroidTest任务。


最高层build.gradle

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        google()
        jcenter()

    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.5.2'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google() …
Run Code Online (Sandbox Code Playgroud)

android-testing gradlew android-espresso

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

QDoppelganger(将QWidget克隆到另一个容器中)

Overflowers:我们有一个复杂的Dock小部件,里面有几个复杂的聚合QWidgets.

我需要允许用户将停靠窗口小部件最小化到功能区(作为QToolBar),仅包含最重要的小部件.但是因为这些小部件相当复杂,我宁愿不在代码中重现它们,并且煞费苦心地来回传递它们的自定义值.单击窗口小部件的一个副本应该与单击另一个窗口小部件完全相同.

因此,似乎我想创建一个QDoppelganger小部件,它来回委托输入和呈现事件,以生成另一个控件的功能副本:

class QDoppelganger(QtGui.QWidget):
    def __init__(self, dupeMe, parent):
        super(QDoppelganger, self).__init__(parent)
        self.dupeMe = dupeMe

        formerResizer = self.dupeMe.resizeEvent

        def resizeMe(qResizeEvent):
            self.setFixedSize(self.dupeMe.size())
            return formerResizer(qResizeEvent)

        self.dupeMe.resizeEvent = resizeMe

        formerPainter = self.dupeMe.paintEvent

        def paintMe(qPaintEvent):
            self.update()
            return formerPainter(qPaintEvent)

        self.dupeMe.paintEvent = paintMe

    def mouseMoveEvent(self, qMouseEvent):  return self.dupeMe.mouseMoveEvent(qMouseEvent)
    def mousePressEvent(self, qMouseEvent):  return self.dupeMe.mousePressEvent(qMouseEvent)
    def mouseReleaseEvent(self, qMouseEvent):  return self.dupeMe.mouseReleaseEvent(qMouseEvent)

    def paintEvent(self, qPaintEvent):
        pix = QtGui.QPixmap(self.dupeMe.width(), self.dupeMe.height())
        painter = QtGui.QPainter()
        painter.begin(pix)
        self.dupeMe.render(painter)
        painter.end()
        qp = QtGui.QPainter()
        qp.begin(self)
        qp.drawImage(0, 0, pix.toImage())
        qp.end()
Run Code Online (Sandbox Code Playgroud)

它的驱动程序代码很简单:

button = QtGui.QPushButton('dupe me')
doppel = QtUtil.QDoppelganger(button, …
Run Code Online (Sandbox Code Playgroud)

qwidget pyqt4

5
推荐指数
0
解决办法
1052
查看次数

如何关闭'rake test'中的警告'ruby -w'?

由于其他人草率的编码习惯,我继承了一个包含数百个警告的大型 Rails 项目,我无法修复这些。

当我运行一个单独的测试套件时,使用ruby test/function/my_controller_test.rb,我得到了一个干净的运行,没有警告。但是当我运行时rake test,Rails 的 rake 任务中的某些东西会打开ruby -w,从而激活 Ruby 的警告系统。如何停用该行?-w如果必须,我将编辑源并删除源,但它在哪里?

答案不是rake -q- 这会关闭 rake 自己的喷出。

ruby-on-rails ruby-on-rails-4

5
推荐指数
2
解决办法
1906
查看次数

ActivityScenario<MainActivity> 挂起执行(click())

一般来说,我来这里是因为ActivityTestRule<>不推荐使用久经考验的,显然我需要使用ActivityScenario<>or ActivityScenarioRule<>

但是他们打破了“对视图的测试应该像对待对象一样对待视图对象”的规则。例如,我必须“有效地”将所有断言填充到回调中。我无法开始ActivityScenarioRule<>工作,因为无法填充我的数据库并延迟对onCreate().

所以这给我留下了ActivityScenario<>,我可以做到这一点:

    //  stuff database
    ActivityScenario<MainActivity> scenario = ActivityScenario.launch(MainActivity.class);

    scenario.onActivity( (ma) -> {
        //  assertions on ma that pass

        onView(withId(R.id.configure_device_button)).perform(click());
        
        //  ...
    } );
Run Code Online (Sandbox Code Playgroud)

问题是perform(click())挂断,在wait().

我们还在等什么?

当我将视图对象视为对象时,ma.configureDeviceButton.performClick()有效。所以这意味着我现在必须重新编写数百个视图测试中的每一个......


事实证明,我可以ma像这样共享我的 MainActivity 句柄:

    activateActivity( (ma) -> {
        TestFixtures.ma = ma;
    } );
Run Code Online (Sandbox Code Playgroud)

MainActivity 的寿命比它的回调更长。(如果我们不使用 Execute Around 模式,那么为什么要使用回调呢?)

所以我可能不需要重新设计所有东西。每个人仍然需要一个答案,为什么我的书perform(click())挂了,但是......

android android-activity android-espresso

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