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

Tobias Klein contact at tklein.info
Sat Oct 28 14:50:59 EDT 2023


Hi Troy,

I did not re-attempt to fix the shared data path idea for Android >= 11.

Since Google introduced their scoped storage model ... I gave up on it.

On Android versions <= 10, I use the SWORD path /sdcard/Documents/sword.

On versions >= 11, I store everything in the internal app directory, and 
therefore there is no shared data path anymore.

If you happen to figure out a reliable solution for >= 11 and the new 
Scoped Storage model, I'd be happy to learn.

For >= 11 I am thinking about introducing a Cloud sync feature for the 
sword directory. This could then work with Dropbox and maybe also OneDrive.

Best regards,
Tobias

PS: I had a long summer break this year and was not very active on this 
mailing list. Hopefully my participation will increase again now.


On 10/22/23 11:51 AM, Troy A. Griffitts wrote:
>
> Hi Tobias and others with Android SWORD apps.
>
> I am trying to bundle up a new version of Bishop for Android with the 
> some exciting improvements in the libsword (I'll post another email 
> about those, Lord willing, soon), and I would like to check on the 
> latest status for a shared sword path for us.
>
> I have tried again to read about the current ways for apps to share 
> data and am still unclear what is allowed, without performing experiments.
>
> Tobias, where did you end up with your data path?  I'll do some 
> investigations with the latest versions of Android images available 
> from Google and see where the current logic in Bishop creates data 
> files and report back.
>
> Hope you are all having a wonderful weekend!
>
> Glory to God for salvation in Jesus!  And thanks to Him for life and a 
> warm bed and a roof over our heads and relative peace.  Many don't 
> have those things.
>
> Troy
>
>
> On 10/4/21 13:10, Troy A. Griffitts wrote:
>> 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 
>> <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.
>>
>> _______________________________________________
>> 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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://crosswire.org/pipermail/sword-devel/attachments/20231028/021dead8/attachment.htm>


More information about the sword-devel mailing list