Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 227acd80 authored by Vincent Bourgmayer's avatar Vincent Bourgmayer
Browse files

chore: replace accountManager.startAddAccountSession by addAccount

parent 776c471b
Loading
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -4,8 +4,8 @@
    android:installLocation="internalOnly">
    <!-- normal permissions -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.BIND_AUTOFILL_SERVICE"
        tools:ignore="ProtectedPermissions" />
    <!--<uses-permission android:name="android.permission.BIND_AUTOFILL_SERVICE"
        tools:ignore="ProtectedPermissions" />-->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
    <uses-permission android:name="android.permission.INTERNET" />
@@ -357,7 +357,6 @@
        </service> <!-- account type "Eelo" -->
        <service
            android:name=".syncadapter.EeloAccountAuthenticatorService"
            android:permission="android.permission.BIND_AUTOFILL_SERVICE"
            android:exported="false">
            <intent-filter>
                <action android:name="android.accounts.AccountAuthenticator" />
+37 −23
Original line number Diff line number Diff line
package at.bitfire.davdroid

import android.accounts.AccountManager
import android.accounts.AccountManager.KEY_ACCOUNT_NAME
import android.accounts.AccountManager.KEY_ACCOUNT_SESSION_BUNDLE
import android.accounts.AccountManager.KEY_ACCOUNT_TYPE
import android.accounts.AccountManager.KEY_BOOLEAN_RESULT
import android.accounts.AccountManager.KEY_INTENT
import android.accounts.AccountManagerFuture
@@ -20,23 +22,19 @@ import java.io.IOException
class ReLoginWithOidcActivity : AppCompatActivity() {

    private lateinit var addAccountLauncher: ActivityResultLauncher<Intent>
    private var sessionBundle: Bundle? = null

    override fun onCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?) {
        super.onCreate(savedInstanceState, persistentState)

        val accountManager = AccountManager.get(this)

        // Initialize the ActivityResultLauncher
        addAccountLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
            result ->
            if (result.resultCode == RESULT_OK) {
                // Account was added successfully
                // Handle the result here
                accountManager.finishSession(sessionBundle,
                    null, { _ ->
                                Logger.log.info("Vincent: Account added")
                                finish()
                            }, null)
                Logger.log.info("Vincent: callback for resultActivity launch")

            }
        }
    }
@@ -44,7 +42,7 @@ class ReLoginWithOidcActivity : AppCompatActivity() {
    override fun onStart() {
        super.onStart()

        val accountName = intent?.extras?.getString(AccountManager.KEY_ACCOUNT_NAME, null) ?: return
        val accountName = intent?.extras?.getString(KEY_ACCOUNT_NAME, null) ?: return

        val accountRemovalCallback: (AliasFuture) -> Unit =  { future ->
            val success = future.result.getBoolean(KEY_BOOLEAN_RESULT)
@@ -81,8 +79,19 @@ class ReLoginWithOidcActivity : AppCompatActivity() {
        Logger.log.info("Vincent: Will start add Account Session for: $eAccountType account type")

        try {

            accountManager.addAccount(eAccountType,
                null,
                arrayOf(),
                null,
                this,
                { future -> startAddAccount(future) },
                null
            )


            //todo only work for API 33 ?
            accountManager.startAddAccountSession(
            /*accountManager.startAddAccountSession(
                eAccountType,
                null,
                arrayOf(),
@@ -90,7 +99,7 @@ class ReLoginWithOidcActivity : AppCompatActivity() {
                this,
                { future -> startAddAccount(future) },
                null
            )
            )*/
        } catch (exception: AuthenticatorException) {
            Logger.log.info("Vincent: AuthenticatorException: can't add account: ${exception.message}")

@@ -103,24 +112,29 @@ class ReLoginWithOidcActivity : AppCompatActivity() {


    private fun startAddAccount(future: AliasFuture) {
        try {
            val intent: Intent?
        val result = future.result?: run {
            Logger.log.info("Vincent: Can't add new account: future.result is null")
            return
        }

        val accountName = result.getString(KEY_ACCOUNT_NAME)
        val accountType = result.getString(KEY_ACCOUNT_TYPE, "unexepected account type")

            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
                intent = future.result.getParcelable(KEY_INTENT, Intent::class.java)
                sessionBundle = future.result.getParcelable(KEY_ACCOUNT_SESSION_BUNDLE, Bundle::class.java)
            } else {
                intent = future.result.getParcelable<Intent>(KEY_INTENT)
                sessionBundle = future.result.getParcelable<Bundle>(KEY_ACCOUNT_SESSION_BUNDLE)
        if (accountName != null) {
            Logger.log.info("Vincent: ($accountType) account added: $accountName")
            finish()
            return
        }

            if (sessionBundle == null) {
                Logger.log.info("Vincent: session bundle is null")
        val intent = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
            result.getParcelable(KEY_INTENT, Intent::class.java)
        } else {
            result.getParcelable<Intent>(KEY_INTENT)
        }


        try {
            intent?.let {
                Logger.log.info("Vincent: start activity for result with intent")
                addAccountLauncher.launch(it)
            }
        } catch (exception: Exception) {