小编Ril*_*ald的帖子

MVVM Dagger2与组件中存在匹配键的绑定

我使用以下谷歌示例项目:https://github.com/googlesamples/android-architecture-components作为我的新项目的参考,并且在尝试向项目添加第二个活动时遇到困难.

这是编译时遇到的错误

Error:(22, 8) error: [dagger.android.AndroidInjector.inject(T)] com.apps.myapp.ui.common.MainActivity cannot be provided without an @Inject constructor or from an @Provides-annotated method. This type supports members injection but cannot be implicitly provided.
com.apps.myapp.ui.common.MainActivity is injected at
com.apps.myapp.ui.common.NavigationController.<init>(mainActivity)
com.apps.myapp.ui.common.NavigationController is injected at
com.apps.myapp.ui.addContacts.AddContactsFragment.navigationController
com.apps.myapp.ui.addContacts.AddContactsFragment is injected at
dagger.android.AndroidInjector.inject(arg0)
A binding with matching key exists in component: com.apps.myapp.di.ActivityModule_ContributeMainActivity.MainActivitySubcomponent
Run Code Online (Sandbox Code Playgroud)

这是我的代码

ActivityModule

@Module
public abstract class ActivityModule {

    @ContributesAndroidInjector(modules = FragmentBuildersModule.class)
    abstract MainActivity contributeMainActivity();

    @ContributesAndroidInjector(modules = FragmentBuildersModule.class)
    abstract ContactActivity contributeContactActivity();
} 
Run Code Online (Sandbox Code Playgroud)

AppComponent

@Singleton …
Run Code Online (Sandbox Code Playgroud)

android mvvm dagger-2 android-mvvm android-architecture-components

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

使用Google Play服务位置的Android服务导致应用程序随机打开

我有一项服务,应该捕获用户的位置和当前的电池电量,并将其发送到我的firebase后端.出于某种原因,似乎每当我在我的应用程序中启用此服务时,我的应用程序将随机打开而无需任何用户交互(即使用户在另一个应用程序中,我的应用程序将弹出打开).有谁知道为什么会这样?

这是我的服务代码:

import android.app.Service;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.location.Address;
import android.location.Geocoder;
import android.location.Location;
import android.os.BatteryManager;
import android.os.Bundle;
import android.os.IBinder;
import android.preference.PreferenceManager;
import android.util.Log;
import android.widget.Toast;

import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.common.server.converter.StringToIntConverter;
import com.google.android.gms.location.LocationListener;
import com.google.android.gms.location.LocationRequest;
import com.google.android.gms.location.LocationServices;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;

import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.concurrent.TimeUnit;

import static android.R.attr.lines;
import static com.package.R.id.location;
import static com.package.R.id.view;

public class LocationBatteryService extends Service implements
    GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener, LocationListener …
Run Code Online (Sandbox Code Playgroud)

android android-service android-location google-play-services google-location-services

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

从 Outlook 加载项使用 Outlook REST API Beta

我使用 ReactJS 创建了一个 Outlook 加载项,并按照本指南获取了能够使用 Outlook v2.0 REST API 的令牌: https: //learn.microsoft.com/en-us/office/dev/add -ins/outlook/使用-rest-api

现在我想开始使用 Outlook Beta REST API,并且我想我可以使用相同的令牌来进行 API 调用,但是我收到以下错误,这表明我无法使用此令牌:

{"error":{"code":"UnableToReadToken","message":"OAuth token submitted with the request can not be parsed.","innerError":{"requestId":"b96fc800-82d4-4b6d-8aa0-0b9ff6a36873","date":"2020-02-21T09:27:27"}}}
Run Code Online (Sandbox Code Playgroud)

无论如何,是否可以使用 生成的令牌来调用此 API Office.context.mailbox.getCallbackTokenAsync?我知道我可能可以通过 Azure AD 获取 oauth2 令牌,但是在 Azure AD 门户中,我没有适当的管理员访问权限来遵循此过程,因此我正在寻找不依赖于此的解决方案。

以下是我的函数的代码片段,用于获取令牌并调用 API:

getToken() {
    return new Promise(async function (resolve, reject) {
      try {
        Office.context.mailbox.getCallbackTokenAsync({ isRest: true }, function (result) {
          if (result.status === "succeeded") {
            let accessToken = result.value;
            console.log(result.value);
            resolve(accessToken);
          } else {
            console.log(result.status);
            reject(result.status);
          } …
Run Code Online (Sandbox Code Playgroud)

javascript outlook outlook-restapi outlook-web-addins

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