diff --git a/app/AndroidManifest.xml b/app/AndroidManifest.xml index ec4b8b0..61d551d 100644 --- a/app/AndroidManifest.xml +++ b/app/AndroidManifest.xml @@ -188,7 +188,17 @@ - + + + + + + + + + diff --git a/app/src/com/cege/games/release/MainActivity.java b/app/src/com/cege/games/release/MainActivity.java index 2f6fa72..8ca8181 100644 --- a/app/src/com/cege/games/release/MainActivity.java +++ b/app/src/com/cege/games/release/MainActivity.java @@ -167,6 +167,8 @@ public class MainActivity extends UnityPlayerActivity private AccountManager accountManager; + private String accountType = "com.cege.games.auth"; + @Override protected void onCreate(Bundle savedInstanceState) { requestWindowFeature(Window.FEATURE_NO_TITLE); @@ -208,7 +210,7 @@ public class MainActivity extends UnityPlayerActivity PayClient payClient = PayClient.getInstance(); payClient.init(this); - accountManager = AccountManager.get(this); + accountManager = AccountManager.get(this.getApplicationContext()); String id = Installation.id(this); Log.i(TAG, "custom id:: " + id); Log.i(TAG, "build info::" + Installation.getBuildInfo()); @@ -918,10 +920,17 @@ public class MainActivity extends UnityPlayerActivity public void storagePass(String funid, String account, String password) { Log.i(TAG, "storagePass with: " + account + " | " + password); - + Bundle userData = new Bundle(); + userData.putString("pass", password); // save to account manage - final Account act = new Account(account, "main"); - accountManager.addAccountExplicitly(act, password, null); + runOnUiThread(() -> { + final Account act = new Account(account, accountType); + if (accountManager.addAccountExplicitly(act, password, userData)) { + Log.i(TAG, "storage pass success"); + } else { + Log.i(TAG, "storage pass error"); + } + }); // runOnUiThread(() -> { // Intent intent = new Intent(this, BiometricActivity.class); // intent.putExtra("action", "encrypt"); @@ -934,9 +943,9 @@ public class MainActivity extends UnityPlayerActivity public void authGetStoragePass(String funid, String account) { Log.i(TAG, "authGetStoragePass with: " + account); - Account[] accounts = accountManager.getAccounts(); + Account[] accounts = accountManager.getAccountsByType(accountType); for (Account act : accounts) { - Log.i(TAG, "authGetStoragePass account: " + act.name + " | " + act.type + " | " + accountManager.getPassword(act)); + Log.i(TAG, "authGetStoragePass account: " + act.name + " | " + act.type ); } // runOnUiThread(() -> { // Intent intent = new Intent(this, BiometricActivity.class); diff --git a/app/src/com/jc/jcfw/accountmanager/Authenticator.java b/app/src/com/jc/jcfw/accountmanager/Authenticator.java new file mode 100644 index 0000000..4b1a529 --- /dev/null +++ b/app/src/com/jc/jcfw/accountmanager/Authenticator.java @@ -0,0 +1,56 @@ +package com.jc.jcfw.accountmanager; + +import android.accounts.AbstractAccountAuthenticator; +import android.accounts.Account; +import android.accounts.AccountAuthenticatorResponse; +import android.accounts.NetworkErrorException; +import android.content.Context; +import android.os.Bundle; + +/** + * Created by sebastian on 07-03-16. + */ +public class Authenticator extends AbstractAccountAuthenticator { + + private Context context; + + public Authenticator(Context context) { + super(context); + this.context = context; + } + + @Override + public Bundle editProperties(AccountAuthenticatorResponse response, String accountType) { + return null; + } + + @Override + public Bundle addAccount(AccountAuthenticatorResponse response, String accountType, String authTokenType, String[] requiredFeatures, Bundle options) throws NetworkErrorException { + return null; + } + + @Override + public Bundle confirmCredentials(AccountAuthenticatorResponse response, Account account, Bundle options) throws NetworkErrorException { + 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 authTokenType; + } + + @Override + public Bundle updateCredentials(AccountAuthenticatorResponse response, Account account, String authTokenType, Bundle options) throws NetworkErrorException { + return null; + } + + @Override + public Bundle hasFeatures(AccountAuthenticatorResponse response, Account account, String[] features) throws NetworkErrorException { + return null; + } +} diff --git a/app/src/com/jc/jcfw/accountmanager/AuthenticatorService.java b/app/src/com/jc/jcfw/accountmanager/AuthenticatorService.java new file mode 100644 index 0000000..4240923 --- /dev/null +++ b/app/src/com/jc/jcfw/accountmanager/AuthenticatorService.java @@ -0,0 +1,19 @@ +package com.jc.jcfw.accountmanager; + +import android.app.Service; +import android.content.Intent; +import android.os.IBinder; + +public class AuthenticatorService extends Service { + private Authenticator authenticator; + + @Override + public void onCreate() { + authenticator = new Authenticator(this); + } + + @Override + public IBinder onBind(Intent intent) { + return authenticator.getIBinder(); + } +} diff --git a/res/values/strings.xml b/res/values/strings.xml index 1daff86..e279c5d 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -13,4 +13,6 @@ Biometric login for Wallet Login using your biometric credential Confirm biometric to continue + + store you account \ No newline at end of file diff --git a/res/xml/authenticator.xml b/res/xml/authenticator.xml new file mode 100644 index 0000000..1eda6ad --- /dev/null +++ b/res/xml/authenticator.xml @@ -0,0 +1,5 @@ + + \ No newline at end of file