import android.accounts.AccountManager;
import android.accounts.AccountManagerCallback;
import android.accounts.AccountManagerFuture;
+import android.accounts.AuthenticatorException;
import android.accounts.OperationCanceledException;
import android.content.ComponentName;
import android.content.Context;
import com.owncloud.android.MainApp;
import com.owncloud.android.R;
import com.owncloud.android.authentication.AccountUtils;
+import com.owncloud.android.authentication.AuthenticatorActivity;
import com.owncloud.android.datamodel.FileDataStorageManager;
import com.owncloud.android.datamodel.OCFile;
import com.owncloud.android.files.FileOperationsHelper;
if (mAccountWasSet) {
onAccountSet(mAccountWasRestored);
}
- if (mOperationsServiceBinder != null) {
- mOperationsServiceBinder.addOperationListener(FileActivity.this, mHandler);
- }
}
@Override
super.onPause();
}
- @Override
- protected void onStop() {
-
- if (mOperationsServiceBinder != null) {
- mOperationsServiceBinder.removeOperationListener(this);
- }
-
- super.onStop();
- }
-
@Override
protected void onDestroy() {
- super.onDestroy();
if (mOperationsServiceConnection != null) {
unbindService(mOperationsServiceConnection);
mOperationsServiceBinder = null;
unbindService(mUploadServiceConnection);
mUploadServiceConnection = null;
}
+ super.onDestroy();
}
mFileOperationsHelper.setOpIdWaitingFor(Long.MAX_VALUE);
- if (operation instanceof CreateShareOperation) {
+ if (!result.isSuccess() && (
+ result.getCode() == ResultCode.UNAUTHORIZED ||
+ result.isIdPRedirection() ||
+ (result.isException() && result.getException() instanceof AuthenticatorException)
+ )) {
+
+ requestCredentialsUpdate();
+
+ } else if (operation instanceof CreateShareOperation) {
onCreateShareOperationFinish((CreateShareOperation) operation, result);
} else if (operation instanceof UnshareLinkOperation) {
}
}
+ private void requestCredentialsUpdate() {
+ Intent updateAccountCredentials = new Intent(this, AuthenticatorActivity.class);
+ updateAccountCredentials.putExtra(AuthenticatorActivity.EXTRA_ACCOUNT, getAccount());
+ updateAccountCredentials.putExtra(
+ AuthenticatorActivity.EXTRA_ACTION,
+ AuthenticatorActivity.ACTION_UPDATE_EXPIRED_TOKEN);
+ updateAccountCredentials.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
+ startActivity(updateAccountCredentials);
+ }
+
+
private void onCreateShareOperationFinish(CreateShareOperation operation, RemoteOperationResult result) {
dismissLoadingDialog();
if (result.isSuccess()) {