2023-04-15 18:49:22 +02:00
|
|
|
#!/bin/bash
|
2023-03-04 03:54:08 +01:00
|
|
|
# enable/disable scoped storage: ./set_scoped_storage.sh [limited/full]
|
|
|
|
|
|
|
|
|
|
|
|
function help() {
|
2023-04-15 18:52:57 +02:00
|
|
|
echo -e "\nPossible arguments:"
|
|
|
|
echo -e "limited\t\tEquivalent to a fresh install. /AnkiDroid/ is inaccessible"
|
|
|
|
echo -e "full\t\tEquivalent to an upgrade from targetSdkVersion 29 to 30. /AnkiDroid/ is accessible\n"
|
2023-03-04 03:54:08 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
# 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."
|
|
|
|
help
|
|
|
|
else
|
|
|
|
echo "unknown argument: '$1'. Valid values: 'limited', 'full'"
|
|
|
|
help
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
# future extension: have an argument trigger the 'permission revoked' state by changing 'deckPath'
|
|
|
|
# while storage is 'limited'
|