我编写了一个应用程序来使用 box-api 从手机上传文件。我通过以下方式对用户进行身份验证:
Intent intent = new Intent(this, BoxAuthentication.class);
intent.putExtra("API_KEY", Version.BOX_API_KEY);
startActivityForResult(intent, BOX_RESULT);
我通过以下方式获得返回的 token :
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
}
);
我遇到的问题是用户第一次进行身份验证时,我可以使用保存的 token 上传文件,没问题。但是,例如,一个小时后,当我打电话创建文件夹时,它似乎只是挂起。不返回任何内容,也不调用监听器中的任何方法。
这似乎也发生在我将代码更新推送到设备时,它停止工作并且唯一的解决方案是重新验证用户。 阅读文档似乎 token 不应该过期,并且由于没有返回任何内容,它似乎并不无效。
如果有不同,我将通过 Intent Service 调用此代码。
有人知道问题出在哪里吗?
最佳答案
我自己解决了这个问题。我是从不在主线程上的 Intent Service 调用 box,因此在调用 box api 时,我实际上是从后台线程调用后台线程。我没有知道为什么这有时有效而不是其他但使用处理程序(主线程)并通过它调用 box-api 似乎已经解决了问题。
关于java - Android - Box-API 只是挂起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14110158/