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

Troy A. Griffitts scribe at crosswire.org
Sun Oct 22 05:51:56 EDT 2023


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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://crosswire.org/pipermail/sword-devel/attachments/20231022/e0f02fd9/attachment.htm>


More information about the sword-devel mailing list