小编Ga *_*chi的帖子

服务如何将结果返回给活动

我似乎有一个经典的任务,但我找不到任何关于如何做的例子.

我想下载一些东西.好吧,我称之为网络服务并得到回复...但它几乎是一样的.

为了做到这一点,我有一个活动,启动一个服务,产生一个完成工作的线程.

现在我想使用我在启动服务的活动中获得的数据.

(我假设开始另一个活动来处理显示结果的工作很简单)

我的问题是服务如何通知某个活动(启动它或另一个活动的活动)?

任何指向示例的指针都非常感谢.

问候

service notifications android android-activity

28
推荐指数
2
解决办法
3万
查看次数

在后台打开新标签,将焦点放在当前标签上 - Chrome

如何在JavaScript中执行CTRL +点击最新版Chrome(v68)中的链接?

上下文 - 我正在运行一个JavaScript脚本,它在一天中的某些时间打开某个选项卡(并在几分钟后关闭它).我试图让它在后台打开选项卡,将焦点放在我正在使用的当前选项卡上.

以编程方式打开的标签导致Chrome即使在最小化时也会弹出,相当干扰.

我在Stack Overflow上找到的这些旧解决方案无法与最新版本的Chrome一起使用.

手动CTRL +单击链接可实现我想要的效果(选项卡在后台打开).这可以通过最新版本的Chrome以编程方式实现吗?


以下代码不再适用于最新版本的Chrome ..

const openNewBackgroundTab = (url) => {
  const anchor = document.createElement("a");
  anchor.href = url;
  document.body.appendChild(anchor);
  const evt = document.createEvent("MouseEvents");    
  // the tenth parameter of initMouseEvent sets ctrl key
  evt.initMouseEvent(
    "click", true, true, window, 0, 0, 0, 0, 0,
    true, false, false, false, 0, null
  );
  anchor.dispatchEvent(evt);
}
openNewBackgroundTab('https://stackoverflow.com');
Run Code Online (Sandbox Code Playgroud)

..新标签仍然是焦点.


重现步骤:

  • 打开窗口1并在控制台中执行:

let winStacko; setTimeout(() => { winStacko = open('https://www.stackoverflow.com'); }, 30 * 1000); setTimeout(() = …

html javascript google-chrome google-chrome-extension

18
推荐指数
2
解决办法
9403
查看次数

ReactJS应用程序 - 弹性VS快速失败

我正处于React应用程序开发的中间,这是我用于组件的方法:我使用PropTypes验证验证我希望收到的道具,但我仍然分配默认值以避免它如果收到的数据出现问题,则会中断.

最近我被告知我们不应该这样做,道具是我们对父母的期望,如果合同没有得到尊重让组件破裂.

哪种方法是正确的,有哪些优点和缺点?

我的一些考虑因素值得深思.

在我的初始方法之后,在测试中,我明确地测试了传递给测试组件的默认值,一些无效数据并期望仍然打印出有效的快照.由于一些不良数据,测试不会失败,但是我打印出PropTypes验证警告(如果需要,可能会转换为错误 - 我认为 - 或者在测试中嘲笑它们).

测试和实际应用程序中的这些警告比仅仅看到"无法读取'someProp'未定义"或类似的错误(以及让React渲染循环中断)更简洁明了.propType验证直接并清楚地告诉你你做错了什么(你传给了错误的类型作为道具,道具完全缺失等等).

使用第二种方法,测试失败,因为应用程序中断.我认为只有当测试覆盖率真的很好(90/100%)时这才是一个很好的方法,否则这是一个风险 - 它可以上线并打破破坏产品声誉的边缘情况.重构或需求变更经常发生,并且一些边缘情况可能最终导致破坏应用程序的不需要的数据,并且未在自动或手动测试中捕获.

这意味着当应用程序处于活动状态时,由于某些不良数据而整个应用程序停止工作,代码可能会破坏父组件,而在第一种情况下,应用程序具有弹性并且只能以受控方式显示一些空字段.

思考?

遵循一个简化的例子:

反应组件

import React from 'react';
import PropTypes from 'prop-types';
import styles from './styles.css';

export const App = ({ person : { name, surname, address, subscription } = {} }) => (
  <div style={styles.person}>
    <p> {person.name} </p>
    <p> {person.surname} </p>
    <p> {person.address} </p>
    <div>
    {
      person.subscription &&
       <Subscription details={person.subscription} />
    }
    </div>
  </div>
);

// PS. this is incorrect in this example (as pointed out …
Run Code Online (Sandbox Code Playgroud)

testing validation reactjs resiliency

9
推荐指数
2
解决办法
592
查看次数

Outlook - 阅读其他用户的日历

我正在开发基于Outlook-SDK-Android的Android应用程序.该应用程序与Outlook Calendar REST API进行对话,以检索,预订和删除事件(请参阅此处此处的代码示例).现在我需要阅读其他人的日历,并且我已经向其他用户提供了具有委托访问权限(作者权限级别)的Office365帐户.

我已使用新门户网站上提供的帐户注册了我的应用.在我的应用程序中,我使用范围" https://outlook.office.com/Calendars.ReadWrite ".(范围在com.microsoft.aad.adal.AuthenticationContext.acquireToken()中用于初始化Android Outlook ClientOffice REST客户端,这是由orc-for-android提供的共享客户端堆栈)

当我尝试读取我有委托访问权限的另一个用户的日历时,我只收到403响应:

{
  "error": {
    "code": "ErrorAccessDenied",
    "message": "Access is denied. Check credentials and try again."
  }
}
Run Code Online (Sandbox Code Playgroud)

有帮助吗?

这是API的限制吗?如果是这样,为什么提供以下方法调用链呢?

outlookClient.getUsers()
             .getById("meetingRoom@company.com")
             .getCalendarView()
Run Code Online (Sandbox Code Playgroud)

更新:

似乎正在进行的工作将允许此方案,如下所述:Office 365 REST API - 访问会议室日历

因此,如果在这方面取得进展,我可以在不使用" 管理服务应用程序 "的情况下实现我的目标吗?(请参阅Office 365 API或Azure AD Graph API - 获取某些其他日历)

我可以使用此处建议的基本身份验证吗?

android ms-office outlook-calendar office365 outlook-restapi

8
推荐指数
1
解决办法
3439
查看次数

使用LoopJ AndroidAsyncHttp从https下载图像资源

我正在使用LoopJ AndroidAsyncHttp下载图像,但是当我尝试使用HTTPS URL时,我没有得到任何响应.码:

AsyncHttpClient client = new AsyncHttpClient();
client.get(httpsUrlString, new BinaryHttpResponseHandler(allowedContentTypes) {
    @Override
    public void onSuccess(byte[] fileData) {
        Bitmap bitmap = BitmapFactory.decodeByteArray(fileData, 0, fileData.length);
        image.setImageBitmap(bitmap);
    }
});
Run Code Online (Sandbox Code Playgroud)

https android image android-async-http

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

Outlook API - 获取会议室日历

如何使用Outlook Calendar REST API获取Office365会议室日历?

我在api文档或stackoverflow上找不到任何有用的东西..

outlook-calendar office365 outlook-restapi

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

cordova-plugin-ionic-webview - 尽管有自动完成属性,但无法以 HTML 形式保存密码

我正在开发 Cordova(~PhoneGap,~Ionic)应用程序,我遵循Apple 指南,并将自动完成属性添加到我的 HTML 登录表单,以询问用户是否要在尝试注册时保存他们的凭据。

在 Android 上,会出现询问用户是否要正确存储其凭据的弹出窗口,我可以在下次尝试登录时选择我存储的凭据。但在 iOS 上并非如此

我想到的第一件事可能会阻止 webview 为 iOS 关联密码和域,因为我为后者使用了自定义域(例如 iosapp://)。

我无法更改正在使用的自定义域,有没有办法让它提示用户保存他们的凭据?


这个问题可以通过这种方式重现:

  1. 插件 cordova-plugin-ionic-webview 添加到 Cordova 应用程序 (cordova-ios 5.1.0)
  2. 添加<preference name="Hostname" value="somescheme" />到您的 config.xml 为您的应用程序指定一个自定义主机名(默认是 ionic://,我相信也会有同样的问题)
  3. onDeviceReady 重定向到我的 PoC(适用于所有其他浏览器):
  window.location.href = 'https://gabriele-sacchi.github.io/pocs/biometric';
Run Code Online (Sandbox Code Playgroud)

在 Android Cordova 中工作的 PoC:


gitlab 问题

phonegap-plugins cordova ionic-framework ionic-webview cordova-plugin-ionic-webview

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

Android服务和活动之间的通信

看到建筑

我想开发一个包含三个活动和两个服务的Android应用程序.

名为WebClientService的第一个Service 使用Handler每30秒调用一次REST API,并且必须通过结果通知活动的Activity.它还必须通知名为DatabaseService的第二个服务,以便更新本地数据库.

数据库服务将被称为只有一次的onCreate(在应用程序崩溃和重启的情况下)的,只是一次活动的onRestart(以这种方式,我们有数据显示的情况下,出现了连接问题).由于WebClientService每隔30秒通知"活动"活动,因此活动将自动更新.

问题是:

  • 通知更新活动活动和后台DatabaseService的最佳方法是什么?我的想法是在WebClientService中使用sendBroadcast()并在每个活动和DatabaseService中使用BroadcastReceiver,这是正确的方法吗?

  • 我应该使用相同的方法进行AllMeetingRoomActivity和DatabaseService之间的通信,还是应该使用绑定服务

谢谢

更新:DatabaseService不再是后台服务,而只是WebClientService和活动之间的db层的共享实例.

现在的问题是:这是一个很好的方法,只需将我的30秒更新写入本地数据库,并允许活动每隔几秒钟更新一次,只需从本地数据库读取?这会对性能产生太大影响吗?

语境:

遵循我到目前为止所实现的,但使用SettableFutures,因此一旦我明确了如何使它们有效地进行通信,就需要使用服务和广播重新实现:

public class MainActivity extends AppCompatActivity {               

    private TextView meetingsTextView;
    private EditText mEdit, editSubject;

    private final ConnectorInitializer clientInitializer = new ConnectorInitializer();
    private AppConnector genericClient; // can use OutlookClient or a test client to talk with a mock server

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        // initializes client based on …
Run Code Online (Sandbox Code Playgroud)

android android-service android-activity localbroadcastmanager

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

Eclipse - 对任何子字符串进行多行编辑,如 Sublime Text 和 Atom 中

现在有什么方法可以在 Eclipse 中实现像 Sublime 和 Atom 一样对任何子字符串进行多行编辑吗?(CTRL+D 用于这些)

对插件的引用也可以。(我找到了这个插件,但它似乎被放弃了: https://github.com/caspark/eclipse-multicursor

我也在stackoverflow 上发现了这个类似的问题,但它已经有 6 年历史了。想知道是否同时出现了一些东西。

谢谢

java eclipse refactoring sublimetext3 atom-editor

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

如何将缺少的引用标头添加到 Cordova IOS 应用程序

我正在使用 Cordova 构建 iOS 应用程序。我使用Ionic 引擎,这意味着该应用程序由设备上运行的网络服务器提供服务。

我的window.location.origin是“ionic://my-app.com”。

第三方 API(我需要使用它来根据用户键入的内容获取地址建议)拒绝我的 HTTP 请求,因为referrer请求中缺少标头。

无法以编程方式从 JS 层添加引荐来源网址,并且这些不起作用:

  • <meta name="referrer" content="origin">

  • <meta name="referrer" content="always">

我怀疑问题在于 API 正在使用https,而我的 iOS 应用程序正在使用自定义方案(默认方案是ionic://且无法更改为 https)。因此,WebView 不会添加引用标头。

我该如何解决这个问题?

ios cordova hybrid-mobile-app ionic-framework phonegap

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