Fix lint issue: Missing permission

This commit is contained in:
maskara 2017-03-10 23:24:18 +05:30
parent 46f081d652
commit da3895342b

View file

@ -1,12 +1,16 @@
package fr.free.nrw.commons.auth;
import android.Manifest;
import android.accounts.Account;
import android.accounts.AccountManager;
import android.accounts.AccountManagerFuture;
import android.accounts.AuthenticatorException;
import android.accounts.OperationCanceledException;
import android.content.pm.PackageManager;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import java.io.IOException;
@ -20,23 +24,24 @@ public abstract class AuthenticatedActivity extends AppCompatActivity {
CommonsApplication app;
private String authCookie;
public AuthenticatedActivity(String accountType) {
this.accountType = accountType;
this.accountType = accountType;
}
private class GetAuthCookieTask extends AsyncTask<Void, String, String> {
private Account account;
private AccountManager accountManager;
public GetAuthCookieTask(Account account, AccountManager accountManager) {
this.account = account;
this.accountManager = accountManager;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
if(result != null) {
if (result != null) {
authCookie = result;
onAuthCookieAcquired(result);
} else {
@ -60,19 +65,19 @@ public abstract class AuthenticatedActivity extends AppCompatActivity {
}
}
}
private class AddAccountTask extends AsyncTask<Void, String, String> {
private AccountManager accountManager;
public AddAccountTask(AccountManager accountManager) {
this.accountManager = accountManager;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
if(result != null) {
Account[] allAccounts =accountManager.getAccountsByType(accountType);
Account curAccount = allAccounts[0];
if (result != null) {
Account curAccount = getCurrentAccount();
GetAuthCookieTask getCookieTask = new GetAuthCookieTask(curAccount, accountManager);
getCookieTask.execute();
} else {
@ -80,6 +85,18 @@ public abstract class AuthenticatedActivity extends AppCompatActivity {
}
}
@Nullable
private Account getCurrentAccount() {
if (ActivityCompat.checkSelfPermission(AuthenticatedActivity.this, Manifest.permission.GET_ACCOUNTS) != PackageManager.PERMISSION_GRANTED) {
return null;
}
Account[] allAccounts = accountManager.getAccountsByType(accountType);
if (allAccounts == null) {
return null;
}
return allAccounts[0];
}
@Override
protected String doInBackground(Void... params) {
AccountManagerFuture<Bundle> resultFuture = accountManager.addAccount(accountType, null, null, null, AuthenticatedActivity.this, null, null);