package au.id.teda.broadband.usage.authenticator;
import android.accounts.AbstractAccountAuthenticator;
import android.accounts.Account;
import android.accounts.AccountAuthenticatorResponse;
import android.accounts.AccountManager;
import android.accounts.NetworkErrorException;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import au.id.teda.broadband.usage.R;
import au.id.teda.broadband.usage.activity.BaseActivity;
public class AccountAuthenticator extends AbstractAccountAuthenticator {
//private static final String DEBUG_TAG = BaseActivity.DEBUG_TAG;
/** Account type String. This needs to match authenticator.xml type **/
public static final String ACCOUNT_TYPE = "au.net.iinet.account";
private static AccountManager mAccountManager;
// Activity context
private static Context mContext;
public AccountAuthenticator(Context context) {
super(context);
AccountAuthenticator.mContext = context;
mAccountManager = AccountManager.get(mContext);
}
@Override
public Bundle addAccount(AccountAuthenticatorResponse response, String accountType,
String authTokenType, String[] requiredFeatures, Bundle options)
throws NetworkErrorException {
// TODO: delete?
final Bundle result = new Bundle();
final Intent intent = new Intent(mContext, AuthenticatorActivity.class);
intent.putExtra(AccountManager.KEY_ACCOUNT_AUTHENTICATOR_RESPONSE, response);
result.putParcelable(AccountManager.KEY_INTENT, intent);
return result;
}
@Override
public Bundle confirmCredentials(AccountAuthenticatorResponse response, Account account, Bundle options) {
return null;
}
@Override
public Bundle editProperties(AccountAuthenticatorResponse response, String accountType) {
return null;
}
@Override
public Bundle getAuthToken(AccountAuthenticatorResponse response,
Account account, String authTokenType, Bundle options)
throws NetworkErrorException {
return null;
}
@Override
public String getAuthTokenLabel(String authTokenType) {
return null;
}
@Override
public Bundle hasFeatures(AccountAuthenticatorResponse response,
Account account, String[] features) throws NetworkErrorException {
return null;
}
@Override
public Bundle updateCredentials(AccountAuthenticatorResponse response, Account account,
String authTokenType, Bundle loginOptions) {
return null;
}
public Account getAccount(){
// Get accounts based on account type
Account[] accounts = mAccountManager.getAccountsByType(ACCOUNT_TYPE);
if (accounts.length > 0){
return accounts[0];
} else {
return null;
}
}
public String getUsername(){
if (getAccount() != null){
return getAccount().name;
} else {
return mContext.getString(R.string.fragment_product_plan_username);
}
}
public String getPassword(){
if (getAccount() != null){
return mAccountManager.getPassword(getAccount());
} else {
return "";
}
}
public boolean isAccountAuthenticated(){
if (getAccount() != null){
if (getUsername().length() >0 && getPassword().length() > 0){
return true;
} else {
return false;
}
} else {
return false;
}
}
}