Skip to content

Commit

Permalink
add tool: enable/disable scoped storage
Browse files Browse the repository at this point in the history
A script to enable/disable scoped storage without the need to
uninstall/upgrade from `targetSdkVersion 29`

Makes testing of the disable/enable routine quicker

Issue ankidroid#5304
  • Loading branch information
david-allison committed Mar 4, 2023
1 parent 7e9769d commit 8f71fba
Showing 1 changed file with 33 additions and 0 deletions.
33 changes: 33 additions & 0 deletions tools/storage/set_scoped_storage.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
#/bin/bash
# enable/disable scoped storage: ./set_scoped_storage.sh [limited/full]

# This should be run when a single AOSP emulator is open.
# Errors are suppressed by default. Remove > /dev/null
if [ "$1" = "full" ]; then
adb shell pm grant com.ichi2.anki.debug android.permission.READ_EXTERNAL_STORAGE
adb shell pm grant com.ichi2.anki.debug android.permission.WRITE_EXTERNAL_STORAGE
adb shell am compat disable FORCE_ENABLE_SCOPED_STORAGE com.ichi2.anki.debug > /dev/null
adb shell am compat disable DEFAULT_SCOPED_STORAGE com.ichi2.anki.debug > /dev/null # fails on Play store
if [ $? == '0' ]; then
echo "scoped storage disabled: preserving storage access"
else
echo "something went wrong: edit script to display errors"
fi
elif [ "$1" = "limited" ]; then
adb shell pm revoke com.ichi2.anki.debug android.permission.READ_EXTERNAL_STORAGE
adb shell pm revoke com.ichi2.anki.debug android.permission.WRITE_EXTERNAL_STORAGE
adb shell am compat enable FORCE_ENABLE_SCOPED_STORAGE com.ichi2.anki.debug > /dev/null
adb shell am compat enable DEFAULT_SCOPED_STORAGE com.ichi2.anki.debug > /dev/null
if [ $? == '0' ]; then
echo "scoped storage enabled: storage access disabled"
else
echo "something went wrong: edit script to display errors"
fi
elif [ "$1" = "" ]; then
echo "First argument missing. Valid values: 'limited', 'full'"
else
echo "unknown argument: '$1'. Valid values: 'limited', 'full'"
fi

# future extension: have an argument trigger the 'permission revoked' state by changing 'deckPath'
# while storage is 'limited'

0 comments on commit 8f71fba

Please sign in to comment.