diff --git a/tools/storage/set_scoped_storage.sh b/tools/storage/set_scoped_storage.sh new file mode 100755 index 000000000000..0291c4983457 --- /dev/null +++ b/tools/storage/set_scoped_storage.sh @@ -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' \ No newline at end of file