ankidroid / Anki-Android

AnkiDroid: Anki flashcards on Android. Your secret trick to achieve superhuman information retention.
GNU General Public License v3.0
8.59k stars 2.23k forks source link

2.16.0beta No write access to AnkiDroid directory /storage/emulated/0/AnkiDroid #14075

Closed BrayanDSO closed 1 year ago

BrayanDSO commented 1 year ago
com.ichi2.anki.exception.StorageAccessException: No write access to AnkiDroid directory /storage/emulated/0/AnkiDroid
    at com.ichi2.anki.CollectionHelper$Companion.initializeAnkiDroidDirectory(CollectionHelper.kt:103)
    at com.ichi2.anki.CollectionManager.createCollectionPath(CollectionManager.kt:16)
    at com.ichi2.anki.CollectionManager.ensureOpenInner(CollectionManager.kt:21)
    at com.ichi2.anki.CollectionManager.access$ensureOpenInner(CollectionManager.kt:1)
    at com.ichi2.anki.CollectionManager$withCol$2.invoke(CollectionManager.kt:2)
    at com.ichi2.anki.CollectionManager$withCol$2.invoke(CollectionManager.kt:1)
    at com.ichi2.anki.CollectionManager$withQueue$2.invokeSuspend(CollectionManager.kt:15)
    at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:12)
    at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:119)
    at kotlinx.coroutines.internal.LimitedDispatcher.run(LimitedDispatcher.kt:13)
    at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:3)
    at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:1)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:15)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:29)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:1)

Android 9, beta02 https://ankidroid.org/acra/app/1/bug/49592/report/6cb08e52-a9c7-43ba-9da0-5460c089ac6d

BrayanDSO commented 1 year ago

com.ichi2.anki.exception.StorageAccessException: No write access to AnkiDroid directory /storage/emulated/0/AnkiDroid
    at com.ichi2.anki.CollectionHelper$Companion.initializeAnkiDroidDirectory(CollectionHelper.kt:103)
    at com.ichi2.anki.CollectionManager.collectionPathInValidFolder(CollectionManager.kt:16)
    at com.ichi2.anki.CollectionManager.ensureOpenInner(CollectionManager.kt:21)
    at com.ichi2.anki.CollectionManager.access$ensureOpenInner(CollectionManager.kt:1)
    at com.ichi2.anki.CollectionManager$getColUnsafe$1$1.invoke(CollectionManager.kt:2)
    at com.ichi2.anki.CollectionManager$getColUnsafe$1$1.invoke(CollectionManager.kt:1)
    at com.ichi2.anki.CollectionManager$withQueue$2.invokeSuspend(CollectionManager.kt:15)
    at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:12)
    at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:119)
    at kotlinx.coroutines.internal.LimitedDispatcher.run(LimitedDispatcher.kt:13)
    at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:3)
    at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:1)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:15)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:29)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:1)

Android 11, beta04 https://ankidroid.org/acra/app/1/bug/55633/report/1975e270-4e31-4d38-9682-d685c5d38ff7

Logcat

06-28 07:51:29.361 W/AnkiDroid( 8511):  at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:101)
06-28 07:51:29.361 W/AnkiDroid( 8511):  at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
06-28 07:51:29.361 W/AnkiDroid( 8511):  at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
06-28 07:51:29.361 W/AnkiDroid( 8511):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2394)
06-28 07:51:29.361 W/AnkiDroid( 8511):  at android.os.Handler.dispatchMessage(Handler.java:106)
06-28 07:51:29.361 W/AnkiDroid( 8511):  at android.os.Looper.loopOnce(Looper.java:211)
06-28 07:51:29.361 W/AnkiDroid( 8511):  at android.os.Looper.loop(Looper.java:300)
06-28 07:51:29.361 W/AnkiDroid( 8511):  at android.app.ActivityThread.main(ActivityThread.java:8294)
06-28 07:51:29.361 W/AnkiDroid( 8511):  at java.lang.reflect.Method.invoke(Native Method)
06-28 07:51:29.361 W/AnkiDroid( 8511):  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:559)
06-28 07:51:29.361 W/AnkiDroid( 8511):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:954)
06-28 07:51:29.361 W/AnkiDroid( 8511): 
06-28 07:51:29.361 W/AnkiDroid( 8511): com.ichi2.anki.exception.StorageAccessException: No write access to AnkiDroid directory /storage/emulated/0/AnkiDroid
06-28 07:51:29.361 W/AnkiDroid( 8511):  at com.ichi2.anki.CollectionHelper$Companion.initializeAnkiDroidDirectory(CollectionHelper.kt:103)
06-28 07:51:29.361 W/AnkiDroid( 8511):  at com.ichi2.anki.CollectionHelper$Companion.isCurrentAnkiDroidDirAccessible(CollectionHelper.kt:10)
06-28 07:51:29.361 W/AnkiDroid( 8511):  at com.ichi2.anki.InitialActivity.getStartupFailureType(InitialActivity.kt:41)
06-28 07:51:29.361 W/AnkiDroid( 8511):  at com.ichi2.anki.DeckPicker.handleStartup(DeckPicker.kt:63)
06-28 07:51:29.361 W/AnkiDroid( 8511):  at com.ichi2.anki.DeckPicker.onCreate(DeckPicker.kt:143)
06-28 07:51:29.361 W/AnkiDroid( 8511):  at android.app.Activity.performCreate(Activity.java:8522)
06-28 07:51:29.361 W/AnkiDroid( 8511):  at android.app.Activity.performCreate(Activity.java:8486)
06-28 07:51:29.361 W/AnkiDroid( 8511):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1438)
06-28 07:51:29.361 W/AnkiDroid( 8511):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3815)
06-28 07:51:29.361 W/AnkiDroid( 8511):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3980)
06-28 07:51:29.361 W/AnkiDroid( 8511):  at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:101)
06-28 07:51:29.361 W/AnkiDroid( 8511):  at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
06-28 07:51:29.361 W/AnkiDroid( 8511):  at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
06-28 07:51:29.361 W/AnkiDroid( 8511):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2394)
06-28 07:51:29.361 W/AnkiDroid( 8511):  at android.os.Handler.dispatchMessage(Handler.java:106)
06-28 07:51:29.361 W/AnkiDroid( 8511):  at android.os.Looper.loopOnce(Looper.java:211)
06-28 07:51:29.361 W/AnkiDroid( 8511):  at android.os.Looper.loop(Looper.java:300)
06-28 07:51:29.361 W/AnkiDroid( 8511):  at android.app.ActivityThread.main(ActivityThread.java:8294)
06-28 07:51:29.361 W/AnkiDroid( 8511):  at java.lang.reflect.Method.invoke(Native Method)
06-28 07:51:29.361 W/AnkiDroid( 8511):  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:559)
06-28 07:51:29.361 W/AnkiDroid( 8511):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:954)
06-28 07:51:29.362 I/AnkiDroid( 8511): AnkiDroid directory inaccessible
06-28 07:51:29.384 I/AnkiDroid( 8511): AnkiActivity::onStart - DeckPicker
06-28 07:51:29.401 W/AnkiDroid( 8511): DatabaseErrorDialog/ java.io.IOException: Cannot run program "sqlite3": error=13, Permission denied
06-28 07:51:29.401 W/AnkiDroid( 8511):  at java.lang.ProcessBuilder.start(ProcessBuilder.java:1050)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at java.lang.Runtime.exec(Runtime.java:694)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at java.lang.Runtime.exec(Runtime.java:524)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at java.lang.Runtime.exec(Runtime.java:421)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at com.ichi2.anki.dialogs.DatabaseErrorDialog.onCreateDialog(DatabaseErrorDialog.kt:11)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at com.ichi2.anki.dialogs.DatabaseErrorDialog.onCreateDialog(DatabaseErrorDialog.kt:1)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at androidx.fragment.app.DialogFragment.prepareDialog(DialogFragment.java:14)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at androidx.fragment.app.DialogFragment.onGetLayoutInflater(DialogFragment.java:17)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at androidx.fragment.app.Fragment.performGetLayoutInflater(Fragment.java:1)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:56)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:125)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at androidx.fragment.app.FragmentStore.moveToExpectedState(FragmentStore.java:31)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:28)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:10)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:12)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:5)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:21)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:1)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at com.ichi2.anki.AnkiActivity.onStart(AnkiActivity.kt:16)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1564)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at android.app.Activity.performStart(Activity.java:8554)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3859)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:221)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:201)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:173)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2394)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at android.os.Handler.dispatchMessage(Handler.java:106)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at android.os.Looper.loopOnce(Looper.java:211)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at android.os.Looper.loop(Looper.java:300)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at android.app.ActivityThread.main(ActivityThread.java:8294)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at java.lang.reflect.Method.invoke(Native Method)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:559)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:954)
06-28 07:51:29.401 W/AnkiDroid( 8511): Caused by: java.io.IOException: error=13, Permission denied
06-28 07:51:29.401 W/AnkiDroid( 8511):  at java.lang.UNIXProcess.forkAndExec(Native Method)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at java.lang.UNIXProcess.<init>(UNIXProcess.java:133)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at java.lang.ProcessImpl.start(ProcessImpl.java:141)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
06-28 07:51:29.401 W/AnkiDroid( 8511):  ... 33 more
06-28 07:51:29.401 W/AnkiDroid( 8511): 
06-28 07:51:29.401 W/AnkiDroid( 8511): java.io.IOException: Cannot run program "sqlite3": error=13, Permission denied
06-28 07:51:29.401 W/AnkiDroid( 8511):  at java.lang.ProcessBuilder.start(ProcessBuilder.java:1050)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at java.lang.Runtime.exec(Runtime.java:694)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at java.lang.Runtime.exec(Runtime.java:524)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at java.lang.Runtime.exec(Runtime.java:421)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at com.ichi2.anki.dialogs.DatabaseErrorDialog.onCreateDialog(DatabaseErrorDialog.kt:11)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at com.ichi2.anki.dialogs.DatabaseErrorDialog.onCreateDialog(DatabaseErrorDialog.kt:1)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at androidx.fragment.app.DialogFragment.prepareDialog(DialogFragment.java:14)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at androidx.fragment.app.DialogFragment.onGetLayoutInflater(DialogFragment.java:17)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at androidx.fragment.app.Fragment.performGetLayoutInflater(Fragment.java:1)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:56)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:125)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at androidx.fragment.app.FragmentStore.moveToExpectedState(FragmentStore.java:31)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:28)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:10)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:12)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:5)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:21)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:1)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at com.ichi2.anki.AnkiActivity.onStart(AnkiActivity.kt:16)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1564)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at android.app.Activity.performStart(Activity.java:8554)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3859)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:221)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:201)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:173)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2394)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at android.os.Handler.dispatchMessage(Handler.java:106)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at android.os.Looper.loopOnce(Looper.java:211)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at android.os.Looper.loop(Looper.java:300)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at android.app.ActivityThread.main(ActivityThread.java:8294)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at java.lang.reflect.Method.invoke(Native Method)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:559)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:954)
06-28 07:51:29.401 W/AnkiDroid( 8511): Caused by: java.io.IOException: error=13, Permission denied
06-28 07:51:29.401 W/AnkiDroid( 8511):  at java.lang.UNIXProcess.forkAndExec(Native Method)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at java.lang.UNIXProcess.<init>(UNIXProcess.java:133)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at java.lang.ProcessImpl.start(ProcessImpl.java:141)
06-28 07:51:29.401 W/AnkiDroid( 8511):  at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
06-28 07:51:29.401 W/AnkiDroid( 8511):  ... 33 more
06-28 07:51:29.434 I/AnkiDroid( 8511): AnkiActivity::onResume - DeckPicker
06-28 07:52:13.837 I/AnkiDroid( 8511): AnkiActivity::onPause - DeckPicker
06-28 07:52:13.867 I/AnkiDroid( 8511): AnkiActivity::onStop - DeckPicker
06-28 07:52:16.138 I/AnkiDroid( 8511): AnkiActivity::onDestroy - DeckPicker
06-28 07:52:17.346 I/AnkiDroid( 8518): initialize()
06-28 07:52:17.466 I/AnkiDroid( 8518): Participating in analytics sample (sample percentage vs random: 10 2)
06-28 07:52:17.466 I/AnkiDroid( 8518): setOptIn(): from false to false
06-28 07:52:17.466 I/AnkiDroid( 8518): Not participating in analytics sample (sample percentage vs random: 10 20)
06-28 07:52:17.468 I/AnkiDroid( 8518): Creating notification channel with id/name: General Notifications/AnkiDroid
06-28 07:52:17.469 I/AnkiDroid( 8518): Creating notification channel with id/name: Synchronization/Synchronization
06-28 07:52:17.469 I/AnkiDroid( 8518): Creating notification channel with id/name: Global Reminders/Cards due
06-28 07:52:17.469 I/AnkiDroid( 8518): Creating notification channel with id/name: Deck Reminders/Reminders
06-28 07:52:17.469 I/AnkiDroid( 8518): Creating notification channel with id/name: Scoped Storage/Storage migration
06-28 07:52:17.475 I/AnkiDroid( 8518): AnkiDroidApp: Starting Services
06-28 07:52:17.475 W/AnkiDroid( 8518): AnkiDroidApp/ Boot Service did not execute - no permissions
06-28 07:52:17.510 I/AnkiDroid( 8518): Setting theme to BLACK
06-28 07:52:17.521 I/AnkiDroid( 8518): Launching DeckPicker
06-28 07:52:17.577 I/AnkiDroid( 8518): AnkiActivity::onCreate - DeckPicker
06-28 07:52:17.577 I/AnkiDroid( 8518): Setting theme to BLACK
06-28 07:52:17.650 I/AnkiDroid( 8518): isLegacyStorage(): current dir: /storage/emulated/0/AnkiDroid
06-28 07:52:17.650 I/AnkiDroid( 8518): scoped external dirs: /storage/emulated/0/Android/data/com.ichi2.anki/files
06-28 07:52:17.650 I/AnkiDroid( 8518): scoped internal dir: /data/user/0/com.ichi2.anki/files
06-28 07:52:17.651 I/AnkiDroid( 8518): isLegacyStorage(): true
06-28 07:52:17.655 I/AnkiDroid( 8518): migration status: com.ichi2.anki.services.MediaMigrationState$NotOngoing$NotNeeded$CollectionIsInPublicFolderButWillRemainAccessible@aeb20a0
06-28 07:52:17.687 W/AnkiDroid( 8518): InitialActivity/ com.ichi2.anki.exception.StorageAccessException: No write access to AnkiDroid directory /storage/emulated/0/AnkiDroid
06-28 07:52:17.687 W/AnkiDroid( 8518):  at com.ichi2.anki.CollectionHelper$Companion.initializeAnkiDroidDirectory(CollectionHelper.kt:103)
06-28 07:52:17.687 W/AnkiDroid( 8518):  at com.ichi2.anki.CollectionManager.collectionPathInValidFolder(CollectionManager.kt:16)
06-28 07:52:17.687 W/AnkiDroid( 8518):  at com.ichi2.anki.CollectionManager.ensureOpenInner(CollectionManager.kt:21)
06-28 07:52:17.687 W/AnkiDroid( 8518):  at com.ichi2.anki.CollectionManager.access$ensureOpenInner(CollectionManager.kt:1)
06-28 07:52:17.687 W/AnkiDroid( 8518):  at com.ichi2.anki.CollectionManager$getColUnsafe$1$1.invoke(CollectionManager.kt:2)
06-28 07:52:17.687 W/AnkiDroid( 8518):  at com.ichi2.anki.CollectionManager$getColUnsafe$1$1.invoke(CollectionManager.kt:1)
06-28 07:52:17.687 W/AnkiDroid( 8518):  at com.ichi2.anki.CollectionManager$withQueue$2.invokeSuspend(CollectionManager.kt:15)
06-28 07:52:17.687 W/AnkiDroid( 8518):  at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:12)
06-28 07:52:17.687 W/AnkiDroid( 8518):  at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:119)
06-28 07:52:17.687 W/AnkiDroid( 8518):  at kotlinx.coroutines.internal.LimitedDispatcher.run(LimitedDispatcher.kt:13)
06-28 07:52:17.687 W/AnkiDroid( 8518):  at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:3)
06-28 07:52:17.687 W/AnkiDroid( 8518):  at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:1)
06-28 07:52:17.687 W/AnkiDroid( 8518):  at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:15)
06-28 07:52:17.687 W/AnkiDroid( 8518):  at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:29)
06-28 07:52:17.687 W/AnkiDroid( 8518):  at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:1)
06-28 07:52:17.687 W/AnkiDroid( 8518): 
06-28 07:52:17.687 W/AnkiDroid( 8518): com.ichi2.anki.exception.StorageAccessException: No write access to AnkiDroid directory /storage/emulated/0/AnkiDroid
06-28 07:52:17.687 W/AnkiDroid( 8518):  at com.ichi2.anki.CollectionHelper$Companion.initializeAnkiDroidDirectory(CollectionHelper.kt:103)
06-28 07:52:17.687 W/AnkiDroid( 8518):  at com.ichi2.anki.CollectionManager.collectionPathInValidFolder(CollectionManager.kt:16)
06-28 07:52:17.687 W/AnkiDroid( 8518):  at com.ichi2.anki.CollectionManager.ensureOpenInner(CollectionManager.kt:21)
06-28 07:52:17.687 W/AnkiDroid( 8518):  at com.ichi2.anki.CollectionManager.access$ensureOpenInner(CollectionManager.kt:1)
06-28 07:52:17.687 W/AnkiDroid( 8518):  at com.ichi2.anki.CollectionManager$getColUnsafe$1$1.invoke(CollectionManager.kt:2)
06-28 07:52:17.687 W/AnkiDroid( 8518):  at com.ichi2.anki.CollectionManager$getColUnsafe$1$1.invoke(CollectionManager.kt:1)
06-28 07:52:17.687 W/AnkiDroid( 8518):  at com.ichi2.anki.CollectionManager$withQueue$2.invokeSuspend(CollectionManager.kt:15)
06-28 07:52:17.687 W/AnkiDroid( 8518):  at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:12)
06-28 07:52:17.687 W/AnkiDroid( 8518):  at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:119)
06-28 07:52:17.687 W/AnkiDroid( 8518):  at kotlinx.coroutines.internal.LimitedDispatcher.run(LimitedDispatcher.kt:13)
06-28 07:52:17.687 W/AnkiDroid( 8518):  at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:3)
06-28 07:52:17.687 W/AnkiDroid( 8518):  at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:1)
06-28 07:52:17.687 W/AnkiDroid( 8518):  at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:15)
06-28 07:52:17.687 W/AnkiDroid( 8518):  at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:29)
06-28 07:52:17.687 W/AnkiDroid( 8518):  at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:1)
06-28 07:52:17.691 W/AnkiDroid( 8518): InitialActivity/ com.ichi2.anki.exception.StorageAccessException: No write access to AnkiDroid directory /storage/emulated/0/AnkiDroid
06-28 07:52:17.691 W/AnkiDroid( 8518):  at com.ichi2.anki.CollectionHelper$Companion.initializeAnkiDroidDirectory(CollectionHelper.kt:103)
06-28 07:52:17.691 W/AnkiDroid( 8518):  at com.ichi2.anki.CollectionHelper$Companion.isCurrentAnkiDroidDirAccessible(CollectionHelper.kt:10)
06-28 07:52:17.691 W/AnkiDroid( 8518):  at com.ichi2.anki.InitialActivity.getStartupFailureType(InitialActivity.kt:41)
06-28 07:52:17.691 W/AnkiDroid( 8518):  at com.ichi2.anki.DeckPicker.handleStartup(DeckPicker.kt:63)
06-28 07:52:17.691 W/AnkiDroid( 8518):  at com.ichi2.anki.DeckPicker.onCreate(DeckPicker.kt:143)
06-28 07:52:17.691 W/AnkiDroid( 8518):  at android.app.Activity.performCreate(Activity.java:8522)
06-28 07:52:17.691 W/AnkiDroid( 8518):  at android.app.Activity.performCreate(Activity.java:8486)
06-28 07:52:17.691 W/AnkiDroid( 8518):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1438)
06-28 07:52:17.691 W/AnkiDroid( 8518):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3815)
06-28 07:52:17.691 W/AnkiDroid( 8518):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3980)
06-28 07:52:17.691 W/AnkiDroid( 8518):  at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:101)
06-28 07:52:17.691 W/AnkiDroid( 8518):  at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
06-28 07:52:17.691 W/AnkiDroid( 8518):  at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
06-28 07:52:17.691 W/AnkiDroid( 8518):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2394)
06-28 07:52:17.691 W/AnkiDroid( 8518):  at android.os.Handler.dispatchMessage(Handler.java:106)
06-28 07:52:17.691 W/AnkiDroid( 8518):  at android.os.Looper.loopOnce(Looper.java:211)
06-28 07:52:17.691 W/AnkiDroid( 8518):  at android.os.Looper.loop(Looper.java:300)
06-28 07:52:17.691 W/AnkiDroid( 8518):  at android.app.ActivityThread.main(ActivityThread.java:8294)
06-28 07:52:17.691 W/AnkiDroid( 8518):  at java.lang.reflect.Method.invoke(Native Method)
06-28 07:52:17.691 W/AnkiDroid( 8518):  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:559)
06-28 07:52:17.691 W/AnkiDroid( 8518):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:954)
06-28 07:52:17.691 W/AnkiDroid( 8518): 
06-28 07:52:17.691 W/AnkiDroid( 8518): com.ichi2.anki.exception.StorageAccessException: No write access to AnkiDroid directory /storage/emulated/0/AnkiDroid
06-28 07:52:17.691 W/AnkiDroid( 8518):  at com.ichi2.anki.CollectionHelper$Companion.initializeAnkiDroidDirectory(CollectionHelper.kt:103)
06-28 07:52:17.691 W/AnkiDroid( 8518):  at com.ichi2.anki.CollectionHelper$Companion.isCurrentAnkiDroidDirAccessible(CollectionHelper.kt:10)
06-28 07:52:17.691 W/AnkiDroid( 8518):  at com.ichi2.anki.InitialActivity.getStartupFailureType(InitialActivity.kt:41)
06-28 07:52:17.691 W/AnkiDroid( 8518):  at com.ichi2.anki.DeckPicker.handleStartup(DeckPicker.kt:63)
06-28 07:52:17.691 W/AnkiDroid( 8518):  at com.ichi2.anki.DeckPicker.onCreate(DeckPicker.kt:143)
06-28 07:52:17.691 W/AnkiDroid( 8518):  at android.app.Activity.performCreate(Activity.java:8522)
06-28 07:52:17.691 W/AnkiDroid( 8518):  at android.app.Activity.performCreate(Activity.java:8486)
06-28 07:52:17.691 W/AnkiDroid( 8518):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1438)
06-28 07:52:17.691 W/AnkiDroid( 8518):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3815)
06-28 07:52:17.691 W/AnkiDroid( 8518):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3980)
06-28 07:52:17.691 W/AnkiDroid( 8518):  at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:101)
06-28 07:52:17.691 W/AnkiDroid( 8518):  at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
06-28 07:52:17.691 W/AnkiDroid( 8518):  at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
06-28 07:52:17.691 W/AnkiDroid( 8518):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2394)
06-28 07:52:17.691 W/AnkiDroid( 8518):  at android.os.Handler.dispatchMessage(Handler.java:106)
06-28 07:52:17.691 W/AnkiDroid( 8518):  at android.os.Looper.loopOnce(Looper.java:211)
06-28 07:52:17.691 W/AnkiDroid( 8518):  at android.os.Looper.loop(Looper.java:300)
06-28 07:52:17.691 W/AnkiDroid( 8518):  at android.app.ActivityThread.main(ActivityThread.java:8294)
06-28 07:52:17.691 W/AnkiDroid( 8518):  at java.lang.reflect.Method.invoke(Native Method)
06-28 07:52:17.691 W/AnkiDroid( 8518):  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:559)
06-28 07:52:17.691 W/AnkiDroid( 8518):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:954)
06-28 07:52:17.691 I/AnkiDroid( 8518): AnkiDroid directory inaccessible
06-28 07:52:17.713 I/AnkiDroid( 8518): AnkiActivity::onStart - DeckPicker
06-28 07:52:17.729 W/AnkiDroid( 8518): DatabaseErrorDialog/ java.io.IOException: Cannot run program "sqlite3": error=13, Permission denied
06-28 07:52:17.729 W/AnkiDroid( 8518):  at java.lang.ProcessBuilder.start(ProcessBuilder.java:1050)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at java.lang.Runtime.exec(Runtime.java:694)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at java.lang.Runtime.exec(Runtime.java:524)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at java.lang.Runtime.exec(Runtime.java:421)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at com.ichi2.anki.dialogs.DatabaseErrorDialog.onCreateDialog(DatabaseErrorDialog.kt:11)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at com.ichi2.anki.dialogs.DatabaseErrorDialog.onCreateDialog(DatabaseErrorDialog.kt:1)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at androidx.fragment.app.DialogFragment.prepareDialog(DialogFragment.java:14)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at androidx.fragment.app.DialogFragment.onGetLayoutInflater(DialogFragment.java:17)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at androidx.fragment.app.Fragment.performGetLayoutInflater(Fragment.java:1)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:56)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:125)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at androidx.fragment.app.FragmentStore.moveToExpectedState(FragmentStore.java:31)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:28)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:10)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:12)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:5)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:21)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:1)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at com.ichi2.anki.AnkiActivity.onStart(AnkiActivity.kt:16)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1564)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at android.app.Activity.performStart(Activity.java:8554)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3859)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:221)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:201)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:173)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2394)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at android.os.Handler.dispatchMessage(Handler.java:106)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at android.os.Looper.loopOnce(Looper.java:211)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at android.os.Looper.loop(Looper.java:300)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at android.app.ActivityThread.main(ActivityThread.java:8294)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at java.lang.reflect.Method.invoke(Native Method)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:559)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:954)
06-28 07:52:17.729 W/AnkiDroid( 8518): Caused by: java.io.IOException: error=13, Permission denied
06-28 07:52:17.729 W/AnkiDroid( 8518):  at java.lang.UNIXProcess.forkAndExec(Native Method)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at java.lang.UNIXProcess.<init>(UNIXProcess.java:133)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at java.lang.ProcessImpl.start(ProcessImpl.java:141)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
06-28 07:52:17.729 W/AnkiDroid( 8518):  ... 33 more
06-28 07:52:17.729 W/AnkiDroid( 8518): 
06-28 07:52:17.729 W/AnkiDroid( 8518): java.io.IOException: Cannot run program "sqlite3": error=13, Permission denied
06-28 07:52:17.729 W/AnkiDroid( 8518):  at java.lang.ProcessBuilder.start(ProcessBuilder.java:1050)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at java.lang.Runtime.exec(Runtime.java:694)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at java.lang.Runtime.exec(Runtime.java:524)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at java.lang.Runtime.exec(Runtime.java:421)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at com.ichi2.anki.dialogs.DatabaseErrorDialog.onCreateDialog(DatabaseErrorDialog.kt:11)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at com.ichi2.anki.dialogs.DatabaseErrorDialog.onCreateDialog(DatabaseErrorDialog.kt:1)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at androidx.fragment.app.DialogFragment.prepareDialog(DialogFragment.java:14)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at androidx.fragment.app.DialogFragment.onGetLayoutInflater(DialogFragment.java:17)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at androidx.fragment.app.Fragment.performGetLayoutInflater(Fragment.java:1)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:56)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:125)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at androidx.fragment.app.FragmentStore.moveToExpectedState(FragmentStore.java:31)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:28)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:10)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:12)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:5)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:21)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:1)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at com.ichi2.anki.AnkiActivity.onStart(AnkiActivity.kt:16)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1564)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at android.app.Activity.performStart(Activity.java:8554)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3859)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:221)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:201)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:173)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2394)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at android.os.Handler.dispatchMessage(Handler.java:106)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at android.os.Looper.loopOnce(Looper.java:211)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at android.os.Looper.loop(Looper.java:300)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at android.app.ActivityThread.main(ActivityThread.java:8294)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at java.lang.reflect.Method.invoke(Native Method)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:559)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:954)
06-28 07:52:17.729 W/AnkiDroid( 8518): Caused by: java.io.IOException: error=13, Permission denied
06-28 07:52:17.729 W/AnkiDroid( 8518):  at java.lang.UNIXProcess.forkAndExec(Native Method)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at java.lang.UNIXProcess.<init>(UNIXProcess.java:133)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at java.lang.ProcessImpl.start(ProcessImpl.java:141)
06-28 07:52:17.729 W/AnkiDroid( 8518):  at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
06-28 07:52:17.729 W/AnkiDroid( 8518):  ... 33 more
06-28 07:52:17.760 I/AnkiDroid( 8518): AnkiActivity::onResume - DeckPicker
06-28 07:52:26.000 I/AnkiDroid( 8518): AnkiActivity::onPause - DeckPicker
06-28 07:52:26.502 I/AnkiDroid( 8518): AnkiActivity::onStop - DeckPicker
06-28 07:53:13.257 I/AnkiDroid( 8518): AnkiActivity::onStart - DeckPicker
06-28 07:53:13.276 I/AnkiDroid( 8518): AnkiActivity::onResume - DeckPicker
06-28 07:53:27.447 I/AnkiDroid( 8518): AnkiActivity::onPause - DeckPicker
06-28 07:53:27.869 I/AnkiDroid( 8518): AnkiActivity::onStop - DeckPicker
06-28 07:53:38.215 I/AnkiDroid( 8518): AnkiActivity::onStart - DeckPicker
06-28 07:53:38.238 I/AnkiDroid( 8518): AnkiActivity::onResume - DeckPicker
06-28 07:53:59.055 I/AnkiDroid( 8518): Back key pressed
06-28 07:53:59.061 I/AnkiDroid( 8518): finishWithAnimation DEFAULT
06-28 07:53:59.093 I/AnkiDroid( 8518): AnkiActivity::onPause - DeckPicker
06-28 07:53:59.891 I/AnkiDroid( 8518): AnkiActivity::onStop - DeckPicker
06-28 07:53:59.899 I/AnkiDroid( 8518): AnkiActivity::onDestroy - DeckPicker
06-28 07:54:00.333 I/AnkiDroid( 8518): Setting theme to BLACK
06-28 07:54:00.346 I/AnkiDroid( 8518): Launching DeckPicker
06-28 07:54:00.396 I/AnkiDroid( 8518): AnkiActivity::onCreate - DeckPicker
06-28 07:54:00.396 I/AnkiDroid( 8518): Setting theme to BLACK
06-28 07:54:00.436 I/AnkiDroid( 8518): isLegacyStorage(): current dir: /storage/emulated/0/AnkiDroid
06-28 07:54:00.436 I/AnkiDroid( 8518): scoped external dirs: /storage/emulated/0/Android/data/com.ichi2.anki/files
06-28 07:54:00.436 I/AnkiDroid( 8518): scoped internal dir: /data/user/0/com.ichi2.anki/files
06-28 07:54:00.437 I/AnkiDroid( 8518): isLegacyStorage(): true
06-28 07:54:00.449 I/AnkiDroid( 8518): migration status: com.ichi2.anki.services.MediaMigrationState$NotOngoing$NotNeeded$CollectionIsInPublicFolderButWillRemainAccessible@aeb20a0
06-28 07:54:00.451 W/AnkiDroid( 8518): InitialActivity/ com.ichi2.anki.exception.StorageAccessException: No write access to AnkiDroid directory /storage/emulated/0/AnkiDroid
06-28 07:54:00.451 W/AnkiDroid( 8518):  at com.ichi2.anki.CollectionHelper$Companion.initializeAnkiDroidDirectory(CollectionHelper.kt:103)
06-28 07:54:00.451 W/AnkiDroid( 8518):  at com.ichi2.anki.CollectionManager.collectionPathInValidFolder(CollectionManager.kt:16)
06-28 07:54:00.451 W/AnkiDroid( 8518):  at com.ichi2.anki.CollectionManager.ensureOpenInner(CollectionManager.kt:21)
06-28 07:54:00.451 W/AnkiDroid( 8518):  at com.ichi2.anki.CollectionManager.access$ensureOpenInner(CollectionManager.kt:1)
06-28 07:54:00.451 W/AnkiDroid( 8518):  at com.ichi2.anki.CollectionManager$getColUnsafe$1$1.invoke(CollectionManager.kt:2)
06-28 07:54:00.451 W/AnkiDroid( 8518):  at com.ichi2.anki.CollectionManager$getColUnsafe$1$1.invoke(CollectionManager.kt:1)
06-28 07:54:00.451 W/AnkiDroid( 8518):  at com.ichi2.anki.CollectionManager$withQueue$2.invokeSuspend(CollectionManager.kt:15)
06-28 07:54:00.451 W/AnkiDroid( 8518):  at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:12)
06-28 07:54:00.451 W/AnkiDroid( 8518):  at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:119)
06-28 07:54:00.451 W/AnkiDroid( 8518):  at kotlinx.coroutines.internal.LimitedDispatcher.run(LimitedDispatcher.kt:13)
06-28 07:54:00.451 W/AnkiDroid( 8518):  at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:3)
06-28 07:54:00.451 W/AnkiDroid( 8518):  at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:1)
06-28 07:54:00.451 W/AnkiDroid( 8518):  at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:15)
06-28 07:54:00.451 W/AnkiDroid( 8518):  at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:29)
06-28 07:54:00.451 W/AnkiDroid( 8518):  at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:1)
06-28 07:54:00.451 W/AnkiDroid( 8518): 
06-28 07:54:00.451 W/AnkiDroid( 8518): com.ichi2.anki.exception.StorageAccessException: No write access to AnkiDroid directory /storage/emulated/0/AnkiDroid
06-28 07:54:00.451 W/AnkiDroid( 8518):  at com.ichi2.anki.CollectionHelper$Companion.initializeAnkiDroidDirectory(CollectionHelper.kt:103)
06-28 07:54:00.451 W/AnkiDroid( 8518):  at com.ichi2.anki.CollectionManager.collectionPathInValidFolder(CollectionManager.kt:16)
06-28 07:54:00.451 W/AnkiDroid( 8518):  at com.ichi2.anki.CollectionManager.ensureOpenInner(CollectionManager.kt:21)
06-28 07:54:00.451 W/AnkiDroid( 8518):  at com.ichi2.anki.CollectionManager.access$ensureOpenInner(CollectionManager.kt:1)
06-28 07:54:00.451 W/AnkiDroid( 8518):  at com.ichi2.anki.CollectionManager$getColUnsafe$1$1.invoke(CollectionManager.kt:2)
06-28 07:54:00.451 W/AnkiDroid( 8518):  at com.ichi2.anki.CollectionManager$getColUnsafe$1$1.invoke(CollectionManager.kt:1)
06-28 07:54:00.451 W/AnkiDroid( 8518):  at com.ichi2.anki.CollectionManager$withQueue$2.invokeSuspend(CollectionManager.kt:15)
06-28 07:54:00.451 W/AnkiDroid( 8518):  at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:12)
06-28 07:54:00.451 W/AnkiDroid( 8518):  at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:119)
06-28 07:54:00.451 W/AnkiDroid( 8518):  at kotlinx.coroutines.internal.LimitedDispatcher.run(LimitedDispatcher.kt:13)
06-28 07:54:00.451 W/AnkiDroid( 8518):  at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:3)
06-28 07:54:00.451 W/AnkiDroid( 8518):  at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:1)
06-28 07:54:00.451 W/AnkiDroid( 8518):  at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:15)
06-28 07:54:00.451 W/AnkiDroid( 8518):  at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:29)
06-28 07:54:00.451 W/AnkiDroid( 8518):  at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:1)
06-28 07:54:00.453 W/AnkiDroid( 8518): InitialActivity/ com.ichi2.anki.exception.StorageAccessException: No write access to AnkiDroid directory /storage/emulated/0/AnkiDroid
06-28 07:54:00.453 W/AnkiDroid( 8518):  at com.ichi2.anki.CollectionHelper$Companion.initializeAnkiDroidDirectory(CollectionHelper.kt:103)
06-28 07:54:00.453 W/AnkiDroid( 8518):  at com.ichi2.anki.CollectionHelper$Companion.isCurrentAnkiDroidDirAccessible(CollectionHelper.kt:10)
06-28 07:54:00.453 W/AnkiDroid( 8518):  at com.ichi2.anki.InitialActivity.getStartupFailureType(InitialActivity.kt:41)
06-28 07:54:00.453 W/AnkiDroid( 8518):  at com.ichi2.anki.DeckPicker.handleStartup(DeckPicker.kt:63)
06-28 07:54:00.453 W/AnkiDroid( 8518):  at com.ichi2.anki.DeckPicker.onCreate(DeckPicker.kt:143)
06-28 07:54:00.453 W/AnkiDroid( 8518):  at android.app.Activity.performCreate(Activity.java:8522)
06-28 07:54:00.453 W/AnkiDroid( 8518):  at android.app.Activity.performCreate(Activity.java:8486)
06-28 07:54:00.453 W/AnkiDroid( 8518):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1438)
06-28 07:54:00.453 W/AnkiDroid( 8518):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3815)
06-28 07:54:00.453 W/AnkiDroid( 8518):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3980)
06-28 07:54:00.453 W/AnkiDroid( 8518):  at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:101)
06-28 07:54:00.453 W/AnkiDroid( 8518):  at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
06-28 07:54:00.453 W/AnkiDroid( 8518):  at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
06-28 07:54:00.453 W/AnkiDroid( 8518):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2394)
06-28 07:54:00.453 W/AnkiDroid( 8518):  at android.os.Handler.dispatchMessage(Handler.java:106)
06-28 07:54:00.453 W/AnkiDroid( 8518):  at android.os.Looper.loopOnce(Looper.java:211)
06-28 07:54:00.453 W/AnkiDroid( 8518):  at android.os.Looper.loop(Looper.java:300)
06-28 07:54:00.453 W/AnkiDroid( 8518):  at android.app.ActivityThread.main(ActivityThread.java:8294)
06-28 07:54:00.453 W/AnkiDroid( 8518):  at java.lang.reflect.Method.invoke(Native Method)
06-28 07:54:00.453 W/AnkiDroid( 8518):  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:559)
06-28 07:54:00.453 W/AnkiDroid( 8518):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:954)
06-28 07:54:00.453 W/AnkiDroid( 8518): 
06-28 07:54:00.453 W/AnkiDroid( 8518): com.ichi2.anki.exception.StorageAccessException: No write access to AnkiDroid directory /storage/emulated/0/AnkiDroid
06-28 07:54:00.453 W/AnkiDroid( 8518):  at com.ichi2.anki.CollectionHelper$Companion.initializeAnkiDroidDirectory(CollectionHelper.kt:103)
06-28 07:54:00.453 W/AnkiDroid( 8518):  at com.ichi2.anki.CollectionHelper$Companion.isCurrentAnkiDroidDirAccessible(CollectionHelper.kt:10)
06-28 07:54:00.453 W/AnkiDroid( 8518):  at com.ichi2.anki.InitialActivity.getStartupFailureType(InitialActivity.kt:41)
06-28 07:54:00.453 W/AnkiDroid( 8518):  at com.ichi2.anki.DeckPicker.handleStartup(DeckPicker.kt:63)
06-28 07:54:00.453 W/AnkiDroid( 8518):  at com.ichi2.anki.DeckPicker.onCreate(DeckPicker.kt:143)
06-28 07:54:00.453 W/AnkiDroid( 8518):  at android.app.Activity.performCreate(Activity.java:8522)
06-28 07:54:00.453 W/AnkiDroid( 8518):  at android.app.Activity.performCreate(Activity.java:8486)
06-28 07:54:00.453 W/AnkiDroid( 8518):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1438)
06-28 07:54:00.453 W/AnkiDroid( 8518):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3815)
06-28 07:54:00.453 W/AnkiDroid( 8518):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3980)
06-28 07:54:00.453 W/AnkiDroid( 8518):  at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:101)
06-28 07:54:00.453 W/AnkiDroid( 8518):  at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
06-28 07:54:00.453 W/AnkiDroid( 8518):  at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
06-28 07:54:00.453 W/AnkiDroid( 8518):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2394)
06-28 07:54:00.453 W/AnkiDroid( 8518):  at android.os.Handler.dispatchMessage(Handler.java:106)
06-28 07:54:00.453 W/AnkiDroid( 8518):  at android.os.Looper.loopOnce(Looper.java:211)
06-28 07:54:00.453 W/AnkiDroid( 8518):  at android.os.Looper.loop(Looper.java:300)
06-28 07:54:00.453 W/AnkiDroid( 8518):  at android.app.ActivityThread.main(ActivityThread.java:8294)
06-28 07:54:00.453 W/AnkiDroid( 8518):  at java.lang.reflect.Method.invoke(Native Method)
06-28 07:54:00.453 W/AnkiDroid( 8518):  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:559)
06-28 07:54:00.453 W/AnkiDroid( 8518):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:954)
06-28 07:54:00.453 I/AnkiDroid( 8518): AnkiDroid directory inaccessible
06-28 07:54:00.467 I/AnkiDroid( 8518): AnkiActivity::onStart - DeckPicker
06-28 07:54:00.480 W/AnkiDroid( 8518): DatabaseErrorDialog/ java.io.IOException: Cannot run program "sqlite3": error=13, Permission denied
06-28 07:54:00.480 W/AnkiDroid( 8518):  at java.lang.ProcessBuilder.start(ProcessBuilder.java:1050)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at java.lang.Runtime.exec(Runtime.java:694)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at java.lang.Runtime.exec(Runtime.java:524)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at java.lang.Runtime.exec(Runtime.java:421)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at com.ichi2.anki.dialogs.DatabaseErrorDialog.onCreateDialog(DatabaseErrorDialog.kt:11)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at com.ichi2.anki.dialogs.DatabaseErrorDialog.onCreateDialog(DatabaseErrorDialog.kt:1)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at androidx.fragment.app.DialogFragment.prepareDialog(DialogFragment.java:14)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at androidx.fragment.app.DialogFragment.onGetLayoutInflater(DialogFragment.java:17)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at androidx.fragment.app.Fragment.performGetLayoutInflater(Fragment.java:1)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:56)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:125)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at androidx.fragment.app.FragmentStore.moveToExpectedState(FragmentStore.java:31)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:28)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:10)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:12)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:5)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:21)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:1)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at com.ichi2.anki.AnkiActivity.onStart(AnkiActivity.kt:16)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1564)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at android.app.Activity.performStart(Activity.java:8554)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3859)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:221)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:201)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:173)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2394)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at android.os.Handler.dispatchMessage(Handler.java:106)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at android.os.Looper.loopOnce(Looper.java:211)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at android.os.Looper.loop(Looper.java:300)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at android.app.ActivityThread.main(ActivityThread.java:8294)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at java.lang.reflect.Method.invoke(Native Method)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:559)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:954)
06-28 07:54:00.480 W/AnkiDroid( 8518): Caused by: java.io.IOException: error=13, Permission denied
06-28 07:54:00.480 W/AnkiDroid( 8518):  at java.lang.UNIXProcess.forkAndExec(Native Method)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at java.lang.UNIXProcess.<init>(UNIXProcess.java:133)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at java.lang.ProcessImpl.start(ProcessImpl.java:141)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
06-28 07:54:00.480 W/AnkiDroid( 8518):  ... 33 more
06-28 07:54:00.480 W/AnkiDroid( 8518): 
06-28 07:54:00.480 W/AnkiDroid( 8518): java.io.IOException: Cannot run program "sqlite3": error=13, Permission denied
06-28 07:54:00.480 W/AnkiDroid( 8518):  at java.lang.ProcessBuilder.start(ProcessBuilder.java:1050)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at java.lang.Runtime.exec(Runtime.java:694)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at java.lang.Runtime.exec(Runtime.java:524)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at java.lang.Runtime.exec(Runtime.java:421)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at com.ichi2.anki.dialogs.DatabaseErrorDialog.onCreateDialog(DatabaseErrorDialog.kt:11)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at com.ichi2.anki.dialogs.DatabaseErrorDialog.onCreateDialog(DatabaseErrorDialog.kt:1)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at androidx.fragment.app.DialogFragment.prepareDialog(DialogFragment.java:14)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at androidx.fragment.app.DialogFragment.onGetLayoutInflater(DialogFragment.java:17)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at androidx.fragment.app.Fragment.performGetLayoutInflater(Fragment.java:1)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:56)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:125)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at androidx.fragment.app.FragmentStore.moveToExpectedState(FragmentStore.java:31)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:28)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:10)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:12)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:5)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:21)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:1)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at com.ichi2.anki.AnkiActivity.onStart(AnkiActivity.kt:16)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1564)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at android.app.Activity.performStart(Activity.java:8554)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3859)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:221)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:201)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:173)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2394)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at android.os.Handler.dispatchMessage(Handler.java:106)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at android.os.Looper.loopOnce(Looper.java:211)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at android.os.Looper.loop(Looper.java:300)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at android.app.ActivityThread.main(ActivityThread.java:8294)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at java.lang.reflect.Method.invoke(Native Method)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:559)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:954)
06-28 07:54:00.480 W/AnkiDroid( 8518): Caused by: java.io.IOException: error=13, Permission denied
06-28 07:54:00.480 W/AnkiDroid( 8518):  at java.lang.UNIXProcess.forkAndExec(Native Method)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at java.lang.UNIXProcess.<init>(UNIXProcess.java:133)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at java.lang.ProcessImpl.start(ProcessImpl.java:141)
06-28 07:54:00.480 W/AnkiDroid( 8518):  at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
06-28 07:54:00.480 W/AnkiDroid( 8518):  ... 33 more
06-28 07:54:00.496 I/AnkiDroid( 8518): AnkiActivity::onResume - DeckPicker
06-28 07:54:11.287 I/AnkiDroid( 8518): Navigating to card browser
06-28 07:54:11.308 I/AnkiDroid( 8518): AnkiActivity::onPause - DeckPicker
06-28 07:54:11.319 I/AnkiDroid( 8518): AnkiActivity::onCreate - CardBrowser
06-28 07:54:11.319 I/AnkiDroid( 8518): Setting theme to BLACK
06-28 07:54:11.343 I/AnkiDroid( 8518): AnkiActivity::onStart - CardBrowser
06-28 07:54:11.346 I/AnkiDroid( 8518): AnkiActivity::onResume - CardBrowser
PetrVladimirov commented 1 year ago

the error happens after the app update... Granted access to the directory.. Didn't help. Any workarounds?

version 2.16.2 com.ichi2.anki versionCode 321602300 targetSDk31 update: Aug 1, 2023

BrayanDSO commented 1 year ago

Hello, @PetrVladimirov. Does this impedes you to use the app? Are you using a version from the play store?

PetrVladimirov commented 1 year ago

Hello @BrayanDSO, thanks for the quick turnaround! Yes, I was using the version from the play store. After the automatic upgrade to 2.16.2 ankidroid stopped working. I completely reinstalled the app (from play store) and it works now. Seems that the upgrade from the previous version to 2.16.2 didn't work out well.

dae commented 1 year ago

I wonder what's causing this, as it only seems to affect a small number of devices. I presume once you reinstalled the app, you were able to access your existing data that was stored on your device?

BrayanDSO commented 1 year ago

What all the 2.16.2 reports have in common is that they are in Android 11+ and the directory is always /storage/emulated/***/AnkiDroid.

Most of them are in Pixel phones, although we have more Samsung and Xiaomi users

If OP were able to get it to work after reinstalling and now have an App private folder, this means that the logic for putting the AnkiDroid directory in a private folder should be correct, so the problem would be with updates that kept the legacy read/write permissions and a public folder.

My current guess is that because of some platform issue, canWrite() may return false with the legacy permission when checking a public folder.


@PetrVladimirov, since we can't reproduce the issue and you have a device that possibly can, if necessary, could you lend us a hand to test a possible fix later?

PetrVladimirov commented 1 year ago

I wonder what's causing this, as it only seems to affect a small number of devices. I presume once you reinstalled the app, you were able to access your existing data that was stored on your device?

No, I didn't use the existing collection ("/storage/emulated/0/AnkiDroid"). At least there was no visible attempt by the app for doing it after I reinstalled it. As I installed the new version, I just logged in to my account and sync the collection back to the phone.

BTW, if it helps: after upgrade to the new version, before re installation I tried to point Anki to the private folder manually (Advanced => AnkiDroid directory => /storage/emulated/10/Android/data/com.ichi2.anki/files/AnkiDroid), but it didn't work. An error was populated, something like "the folder doesn't exist". Probably because there wasn't subdir ".../AnkiDroid" in that folder...

PetrVladimirov commented 1 year ago

@PetrVladimirov, since we can't reproduce the issue and you have a device that possibly can, if necessary, could you lend us a hand to test a possible fix later?

Sure, I'll be glad to, but it may take several days for me to complete a cycle as I don't have much free time during workdays.

tjbrn commented 1 year ago

Related issue

13756

tjbrn commented 8 months ago

Any progress?

Edit: Solved with 2.17 update