[sword-devel] New shared common SWORD path on Android

Troy A. Griffitts scribe at crosswire.org
Mon Oct 4 07:10:32 EDT 2021


Hi Tobias,
So, I did a bunch of reading when choosing this location and couldn't find anything that specifically listed which folders where standard "top level" folders under /sdcard, only that the changes to the API in newer versions of Android prevented creation of top level folders under /sdcard. This article suggested to use 'Music':

https://www.reddit.com/r/androiddev/comments/jn5azi/android_11_dodges_a_bullet_apps_creating_a_folder/?utm_source=amp&utm_medium=&utm_content=post_body

I didn't think Music was appropriate for us, but Iooked on my developer images from Google on the latest version of Android and a few versions back (I only need to go back as far as until Android still lets me store to /sdcard/sword, because I try that next if /sdcard/Documents/sword fails), and on my physical phone, and they all had /sdcard/Documents/ available.

I am open to better suggestions.

Again, to sum up where I understand things now:

Android, pre-10 lets us store to /sdcard/sword

Android 10 was kind of a mess and wanted everyone to use the new storage api instead of file paths but still allowed /sdcard/sword

Android 11 and later, Google recanted because of pressure from the community and settled on: file path are officially blessed again, but no top level folders created by apps under /sdcard, so we need to choose a folder.

/sdcard/Documents/sword seemed to exist on all versions of Android I checked, later than the versions which still supported /SD card/sword, so I settled with the logic:

Try in this order to test write access to:

/sdcard/Documents/sword
/sdcard/sword
[private unshared app storage]/sword

That's my best attempt. If you have a better suggestion, I am all ears.

Troy


On October 3, 2021 10:56:34 AM MST, Tobias Klein <contact at tklein.info> wrote:
>Hi Troy,
>
>I can certainly consider /sdcard/Documents as a new base also for Ezra 
>(haven't tried it yet).
>
>I just did a quick search and I didn't find any official Android 
>documentation on that particular filesystem path. Is there something you 
>can point me to?
>
>Best regards,
>Tobias
>
>On 9/13/21 12:38 PM, Troy A. Griffitts wrote:
>>
>> Thanks Michael, yes, I also feel we need to not swim against the 
>> Google flow.  The problem is that the Google flow seems to turn at 
>> each new release of Android.  Be assured, my goal is to find a common 
>> means for us to share a single install of SWORD modules and to do it 
>> the way Google wants and for as many versions of Android as practical.
>>
>> Tobias,
>>
>> I've had no trouble writing to /sdcard/... from our C++ code, as long 
>> as I don't write to the root of /sdcard/.  My change from 
>> /sdcard/sword to /sdcard/Documents/sword/ works fine on Android 11.
>>
>> Can you give /sdcard/Documents/sword/ a try?  You can grab my exact 
>> C++ code from the cordova plugin if you have trouble.
>>
>> https://crosswire.org/svn/sword/trunk/bindings/java-jni/jni/swordstub.cpp
>>
>> static void init(JNIEnv *env);
>>
>> On 9/13/21 10:32 AM, Tobias Klein wrote:
>>>
>>> Dear Troy,
>>>
>>> We should certainly align on the directories and keep it simple.
>>>
>>> However, starting from Android 11 Google makes it really hard for us 
>>> due to the "Scoped Storage" concept, see 
>>> https://developer.android.com/about/versions/11/privacy/storage
>>>
>>> I couldn't figure out a way to write to /sdcard any more in my C++ 
>>> context on Android 11.
>>>
>>> As a consequence at the moment I am not using /sdcard from Android 11 
>>> anymore, but only the private app folder.
>>>
>>> For Android < 11 I am using */sdcard/sword*, but for Android >= 11 I 
>>> have completely disabled this including the permissions request for 
>>> WRITE_EXTERNAL_STORAGE.
>>>
>>> I wonder whether there is still any way to still use /sdcard/* in 
>>> Android >= 11 in the C++ context ... I haven't found a solution yet 
>>> and it seems rather complicated.
>>>
>>> Best regards,
>>> Tobias
>>>
>>> On 9/12/21 3:51 PM, Troy A. Griffitts wrote:
>>>> Dear all,
>>>>
>>>> I've been updating Bishop to work on newer versions of Android and have
>>>> found that we are running into problems trying to create the
>>>> "Nonstandard top-level folder" 'sword' at the root of the common storage
>>>> folder.
>>>>
>>>> Tobias, I know a while back you mentioned that you had to update Ezra
>>>> for Android recently, but it has been a long while since we talked about
>>>> it and I'd like to know if you've had any updated thoughts on what
>>>> you're doing there.
>>>>
>>>> Any other mobile Android devs have any thoughts.
>>>>
>>>> For now, I have updated our cordova plugin (and thus Bishop) to check
>>>> and if possible use paths in this preferred order:
>>>>
>>>> "/sdcard/Documents/sword"
>>>>
>>>> "/sdcard/sword"
>>>>
>>>> ((android.app.Application)
>>>> app).getApplicationContext().getFilesDir().getAbsolutePath();
>>>>
>>>> And we are augmenting modules from AndBible:
>>>>
>>>> "/sdcard/Android/data/net.bible.android.activity/files"
>>>>
>>>> ... but I'd prefer not to do this any longer, once we all agree and
>>>> implement storing files in a common location.
>>>>
>>>> Any thoughts?
>>>>
>>>> Troy
>>>>
>>>>
>>>> _______________________________________________
>>>> sword-devel mailing list:sword-devel at crosswire.org
>>>> http://crosswire.org/mailman/listinfo/sword-devel
>>>> Instructions to unsubscribe/change your settings at above page
>>>
>>> _______________________________________________
>>> sword-devel mailing list:sword-devel at crosswire.org
>>> http://crosswire.org/mailman/listinfo/sword-devel
>>> Instructions to unsubscribe/change your settings at above page
>>
>> _______________________________________________
>> sword-devel mailing list: sword-devel at crosswire.org
>> http://crosswire.org/mailman/listinfo/sword-devel
>> Instructions to unsubscribe/change your settings at above page

-- 
Sent from my Android device with K-9 Mail. Please excuse my brevity.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://crosswire.org/pipermail/sword-devel/attachments/20211004/9c79a362/attachment.html>


More information about the sword-devel mailing list