1

我编写了一个应用程序来使用 box-api 从手机上传文件。我通过以下方式对用户进行身份验证:

Intent intent = new Intent(this, BoxAuthentication.class);
intent.putExtra("API_KEY", Version.BOX_API_KEY);
startActivityForResult(intent, BOX_RESULT);

我通过以下方式获得了返回的令牌:

if (resultCode == BoxAuthentication.AUTH_RESULT_SUCCESS)
{
   if(data.getStringExtra("AUTH_TOKEN") != null) {
      writeStringPref(Global.boxToken, data.getStringExtra("AUTH_TOKEN"), getApplicationContext());
   } else { 
      toast("An error occured authenticating, please try again"); finish();
   }
} else if (resultCode == BoxAuthentication.AUTH_RESULT_FAIL) {
   toast("Unable to log into Box"); finish();
}

在我的上传方法中,我通过以下方式调用框:

final Box box = Box.getInstance(Version.BOX_API_KEY);

然后我创建一个文件夹以将文件上传到:

box.createFolder(token, 0l, Global.folderName, true, new CreateFolderListener(){
            @Override
            public void onIOException(IOException e) {
                        //HANDLE
            }

            @Override
            public void onComplete(BoxFolder boxFolder, String status) {
               //DO STUFF
                    }
        );

我遇到的问题是用户第一次进行身份验证时,我可以使用保存的令牌上传文件没问题。但是,例如,一个小时后,当我调用创建文件夹时,它似乎只是挂起。没有返回任何内容,也没有调用侦听器中的任何方法。

当我将代码更新推送到设备时,这似乎也会发生,它停止工作,唯一的解决方案是重新验证用户身份。阅读文档,令牌似乎不会过期,并且由于没有返回任何内容,因此它似乎不是无效的。

如果这有所不同,我将通过 Intent Service 调用此代码。

任何人都有任何想法可能是什么问题?

4

1 回答 1

1

我自己解决了这个问题。我从不在主线程上的 Intent 服务调用 box,因此在调用 box api 时,我实际上是从后台线程调用后台线程。我不知道为什么会这样有时工作而不是其他工作,但使用处理程序(主线程)并通过调用 box-api 似乎已经解决了这个问题。

于 2013-01-01T22:04:27.827 回答