<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>Thanks Tobias, Timmy, and everyone contributing to this
      discussion.  I did a quick search and this page has been helpful. 
      It recommends opting out by using the requestLegacyExternalStorage
      options you've also suggested, but if I understand things
      correctly, it says this will basically make Android 10 work like
      Android 11 will work, so that sounds promising.  I need to make a
      few small updated to Bishop and release a new build in the next
      days.  I'll add the option and see if we do better on Android 10
      and I'll try both our oldest supported Android 4.4 env and an
      Android 11 emulator to see how it goes across the spectrum.</p>
    <p>Thanks again for having a look into this!</p>
    <p>Troy</p>
    <p><br>
    </p>
    <div class="moz-cite-prefix">On 1/7/21 2:21 PM, Tobias Klein wrote:<br>
    </div>
    <blockquote type="cite"
      cite="mid:10063bb3-b0c2-a06c-0ee9-0cedcfce92b6@tklein.info">
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <p>Regarding the /sdcard issues I reported with Bishop I think it
        is actually due to the changes Google introduced in API level 29
        / Android 10 (see Timmy's earlier post).</p>
      <p>I was previously compiling my Ezra Project debug app for API
        level 26 and there I didn't have issues reading/writing /sdcard.<br>
        But with API level 29 / Android 10 I also faced issues
        reading/writing /sdcard with my test app (got a permission
        denied message in adb logcat).<br>
      </p>
      <p>To fix that I added the following option in config.xml in the
        Android platform section:</p>
      <div style="color: #d4d4d4;background-color: #1e1e1e;font-family: 'Droid Sans Mono', 'monospace', monospace, 'Droid Sans Fallback';font-weight: normal;font-size: 14px;line-height: 19px;white-space: pre;"><div><span style="color: #d4d4d4;">        </span><span style="color: #808080;"><</span><span style="color: #569cd6;">edit-config</span><span style="color: #d4d4d4;"> </span><span style="color: #9cdcfe;">file</span><span style="color: #d4d4d4;">=</span><span style="color: #ce9178;">"app/src/main/AndroidManifest.xml"</span><span style="color: #d4d4d4;"> </span><span style="color: #9cdcfe;">mode</span><span style="color: #d4d4d4;">=</span><span style="color: #ce9178;">"merge"</span><span style="color: #d4d4d4;"> </span><span style="color: #9cdcfe;">target</span><span style="color: #d4d4d4;">=</span><span style="color: #ce9178;">"/manifest/application"</span><span style="color: #d4d4d4;"> </span><span style="color: #9cdcfe;">xmlns:android</span><span style="color: #d4d4d4;">=</span><span style="color: #ce9178;"><a class="moz-txt-link-rfc2396E" href="http://schemas.android.com/apk/res/android" moz-do-not-send="true">"http://schemas.android.com/apk/res/android"</a></span><span style="color: #808080;">></span></div><div><span style="color: #d4d4d4;">            </span><span style="color: #808080;"><</span><span style="color: #569cd6;">application</span><span style="color: #d4d4d4;"> </span><span style="color: #9cdcfe;">android:requestLegacyExternalStorage</span><span style="color: #d4d4d4;">=</span><span style="color: #ce9178;">"true"</span><span style="color: #d4d4d4;"> </span><span style="color: #808080;">/></span></div><div><span style="color: #d4d4d4;">        </span><span style="color: #808080;"></</span><span style="color: #569cd6;">edit-config</span></div></div>
      <div class="moz-cite-prefix"><br>
      </div>
      <div class="moz-cite-prefix">@Troy</div>
      <div class="moz-cite-prefix">Can you add that option to the Bishop
        configuration? I fear it otherwise cannot read/write /sdcard on
        Android 10 or later.<br>
      </div>
      <div class="moz-cite-prefix"><br>
      </div>
      <div class="moz-cite-prefix">See also: <br>
        <pre class="clear-for-copy" style="color: initial; direction: ltr !important; font: initial; font-feature-settings: initial; font-kerning: initial; font-optical-sizing: initial; font-variation-settings: initial; text-orientation: initial; text-rendering: initial; -webkit-font-smoothing: initial; -webkit-locale: initial; -webkit-text-orientation: initial; -webkit-writing-mode: initial; writing-mode: initial; zoom: initial; place-content: initial; place-items: initial; place-self: initial; alignment-baseline: initial; animation: initial; appearance: initial; backdrop-filter: initial; backface-visibility: initial; background: initial; background-blend-mode: initial; baseline-shift: initial; block-size: initial; border-block: initial; border: initial; border-radius: initial; border-collapse: initial; border-inline: initial; bottom: initial; box-shadow: initial; box-sizing: initial; break-after: initial; break-before: initial; break-inside: initial; buffered-rendering: initial; caption-side: initial; caret-color: initial; clear: initial; clip: initial; clip-path: initial; clip-rule: initial; color-interpolation: initial; color-interpolation-filters: initial; color-rendering: initial; color-scheme: initial; columns: initial; column-fill: initial; gap: initial; column-rule: initial; column-span: initial; contain: initial; contain-intrinsic-size: initial; content: initial; content-visibility: initial; counter-increment: initial; counter-reset: initial; counter-set: initial; cursor: initial; cx: initial; cy: initial; d: initial; display: initial; dominant-baseline: initial; empty-cells: initial; fill: initial; fill-opacity: initial; fill-rule: initial; filter: initial; flex: initial; flex-flow: initial; float: initial; flood-color: initial; flood-opacity: initial; grid: initial; grid-area: initial; height: initial; hyphens: initial; image-orientation: initial; image-rendering: initial; inline-size: initial; inset-block: initial; inset-inline: initial; isolation: initial; left: -99999px; letter-spacing: normal; lighting-color: initial; line-break: initial; list-style: initial; margin-block: initial; margin: initial; margin-inline: initial; marker: initial; mask: initial; mask-type: initial; max-block-size: initial; max-height: initial; max-inline-size: initial; max-width: initial; min-block-size: initial; min-height: initial; min-inline-size: initial; min-width: initial; mix-blend-mode: initial; object-fit: initial; object-position: initial; offset: initial; opacity: initial; order: initial; origin-trial-test-property: initial; orphans: 2; outline: initial; outline-offset: initial; overflow-anchor: initial; overflow-wrap: initial; overflow: initial; overscroll-behavior-block: initial; overscroll-behavior-inline: initial; overscroll-behavior: initial; padding-block: initial; padding: initial; padding-inline: initial; page: initial; page-orientation: initial; paint-order: initial; perspective: initial; perspective-origin: initial; pointer-events: initial; position: initial; quotes: initial; r: initial; resize: initial; right: initial; ruby-position: initial; rx: initial; ry: initial; scroll-behavior: initial; scroll-margin-block: initial; scroll-margin: initial; scroll-margin-inline: initial; scroll-padding-block: initial; scroll-padding: initial; scroll-padding-inline: initial; scroll-snap-align: initial; scroll-snap-stop: initial; scroll-snap-type: initial; shape-image-threshold: initial; shape-margin: initial; shape-outside: initial; shape-rendering: initial; size: initial; speak: initial; stop-color: initial; stop-opacity: initial; stroke: initial; stroke-dasharray: initial; stroke-dashoffset: initial; stroke-linecap: initial; stroke-linejoin: initial; stroke-miterlimit: initial; stroke-opacity: initial; stroke-width: initial; tab-size: initial; table-layout: initial; text-align: initial; text-align-last: initial; text-anchor: initial; text-combine-upright: initial; text-decoration: initial; text-decoration-skip-ink: initial; text-indent: 0px; text-overflow: initial; text-shadow: initial; text-size-adjust: initial; text-transform: none; text-underline-offset: initial; text-underline-position: initial; top: -99999px; touch-action: initial; transform: initial; transform-box: initial; transform-origin: initial; transform-style: initial; transition: initial; user-select: initial; vector-effect: initial; vertical-align: initial; visibility: initial; -webkit-app-region: initial; border-spacing: initial; -webkit-border-image: initial; -webkit-box-align: initial; -webkit-box-decoration-break: initial; -webkit-box-direction: initial; -webkit-box-flex: initial; -webkit-box-ordinal-group: initial; -webkit-box-orient: initial; -webkit-box-pack: initial; -webkit-box-reflect: initial; -webkit-highlight: initial; -webkit-hyphenate-character: initial; -webkit-line-break: initial; -webkit-line-clamp: initial; -webkit-mask-box-image: initial; -webkit-mask: initial; -webkit-mask-composite: initial; -webkit-perspective-origin-x: initial; -webkit-perspective-origin-y: initial; -webkit-print-color-adjust: initial; -webkit-rtl-ordering: initial; -webkit-ruby-position: initial; -webkit-tap-highlight-color: initial; -webkit-text-combine: initial; -webkit-text-decorations-in-effect: initial; -webkit-text-emphasis: initial; -webkit-text-emphasis-position: initial; -webkit-text-fill-color: initial; -webkit-text-security: initial; -webkit-text-stroke: 0px; -webkit-transform-origin-x: initial; -webkit-transform-origin-y: initial; -webkit-transform-origin-z: initial; -webkit-user-drag: initial; -webkit-user-modify: initial; white-space: pre; widows: 2; width: initial; will-change: initial; word-break: initial; word-spacing: 0px; x: initial; y: initial; z-index: initial;"><div style="color: unset; font-feature-settings: unset; font-kerning: unset; font-optical-sizing: unset; font-size: unset; font-stretch: unset; font-style: unset; font-variant: unset; font-variation-settings: unset; font-weight: unset; text-orientation: unset; text-rendering: unset; writing-mode: unset; place-content: unset; place-items: unset; place-self: unset; animation: unset; backface-visibility: unset; background: unset; background-blend-mode: unset; block-size: unset; border-block: unset; border: unset; border-radius: unset; border-collapse: unset; border-inline: unset; inset: unset; box-shadow: unset; box-sizing: unset; break-after: unset; break-before: unset; break-inside: unset; caption-side: unset; caret-color: unset; clear: unset; clip: unset; clip-path: unset; clip-rule: unset; color-interpolation: unset; color-interpolation-filters: unset; columns: unset; column-fill: unset; gap: unset; column-rule: unset; content: unset; counter-increment: unset; counter-reset: unset; counter-set: unset; cursor: unset; display: unset; dominant-baseline: unset; empty-cells: unset; fill: unset; fill-opacity: unset; fill-rule: unset; filter: unset; flex: unset; flex-flow: unset; float: unset; flood-color: unset; flood-opacity: unset; grid: unset; grid-area: unset; height: unset; hyphens: unset; image-orientation: unset; image-rendering: unset; inline-size: unset; inset-block: unset; inset-inline: unset; isolation: unset; letter-spacing: unset; lighting-color: unset; line-height: unset; list-style: unset; margin-block: unset; margin: unset; margin-inline: unset; marker: unset; mask-type: unset; max-block-size: unset; max-height: unset; max-inline-size: unset; max-width: unset; min-block-size: unset; min-height: unset; min-inline-size: unset; min-width: unset; mix-blend-mode: unset; object-fit: unset; object-position: unset; opacity: unset; order: unset; outline: unset; outline-offset: unset; overflow-anchor: unset; overflow-wrap: unset; overflow: unset; overscroll-behavior: unset; padding-block: unset; padding: unset; padding-inline: unset; paint-order: unset; perspective: unset; perspective-origin: unset; pointer-events: unset; position: unset; quotes: unset; resize: unset; ruby-position: unset; scroll-behavior: unset; scroll-margin-block: unset; scroll-margin: unset; scroll-margin-inline: unset; scroll-padding-block: unset; scroll-padding: unset; scroll-padding-inline: unset; scroll-snap-align: unset; scroll-snap-type: unset; shape-image-threshold: unset; shape-margin: unset; shape-outside: unset; shape-rendering: unset; stop-color: unset; stop-opacity: unset; stroke: unset; stroke-dasharray: unset; stroke-dashoffset: unset; stroke-linecap: unset; stroke-linejoin: unset; stroke-miterlimit: unset; stroke-opacity: unset; stroke-width: unset; table-layout: unset; text-align: unset; text-align-last: unset; text-anchor: unset; text-combine-upright: unset; text-decoration: unset; text-indent: unset; text-overflow: unset; text-shadow: unset; text-transform: unset; touch-action: unset; transform: unset; transform-box: unset; transform-origin: unset; transform-style: unset; transition: unset; vector-effect: unset; vertical-align: unset; visibility: unset; border-spacing: unset; -moz-box-align: unset; -moz-box-direction: unset; -moz-box-flex: unset; -moz-box-ordinal-group: unset; -moz-box-orient: unset; -moz-box-pack: unset; -webkit-line-clamp: unset; mask: unset; -webkit-text-fill-color: unset; -webkit-text-stroke: unset; white-space: pre; width: unset; will-change: unset; word-break: unset; word-spacing: unset; z-index: unset;"><a class="moz-txt-link-freetext" href="https://developer.android.com/training/data-storage/use-cases#opt-out-scoped-storage" moz-do-not-send="true">https://developer.android.com/training/data-storage/use-cases#opt-out-scoped-storage</a></div><div style="color: unset; font-feature-settings: unset; font-kerning: unset; font-optical-sizing: unset; font-size: unset; font-stretch: unset; font-style: unset; font-variant: unset; font-variation-settings: unset; font-weight: unset; text-orientation: unset; text-rendering: unset; writing-mode: unset; place-content: unset; place-items: unset; place-self: unset; animation: unset; backface-visibility: unset; background: unset; background-blend-mode: unset; block-size: unset; border-block: unset; border: unset; border-radius: unset; border-collapse: unset; border-inline: unset; inset: unset; box-shadow: unset; box-sizing: unset; break-after: unset; break-before: unset; break-inside: unset; caption-side: unset; caret-color: unset; clear: unset; clip: unset; clip-path: unset; clip-rule: unset; color-interpolation: unset; color-interpolation-filters: unset; columns: unset; column-fill: unset; gap: unset; column-rule: unset; content: unset; counter-increment: unset; counter-reset: unset; counter-set: unset; cursor: unset; display: unset; dominant-baseline: unset; empty-cells: unset; fill: unset; fill-opacity: unset; fill-rule: unset; filter: unset; flex: unset; flex-flow: unset; float: unset; flood-color: unset; flood-opacity: unset; grid: unset; grid-area: unset; height: unset; hyphens: unset; image-orientation: unset; image-rendering: unset; inline-size: unset; inset-block: unset; inset-inline: unset; isolation: unset; letter-spacing: unset; lighting-color: unset; line-height: unset; list-style: unset; margin-block: unset; margin: unset; margin-inline: unset; marker: unset; mask-type: unset; max-block-size: unset; max-height: unset; max-inline-size: unset; max-width: unset; min-block-size: unset; min-height: unset; min-inline-size: unset; min-width: unset; mix-blend-mode: unset; object-fit: unset; object-position: unset; opacity: unset; order: unset; outline: unset; outline-offset: unset; overflow-anchor: unset; overflow-wrap: unset; overflow: unset; overscroll-behavior: unset; padding-block: unset; padding: unset; padding-inline: unset; paint-order: unset; perspective: unset; perspective-origin: unset; pointer-events: unset; position: unset; quotes: unset; resize: unset; ruby-position: unset; scroll-behavior: unset; scroll-margin-block: unset; scroll-margin: unset; scroll-margin-inline: unset; scroll-padding-block: unset; scroll-padding: unset; scroll-padding-inline: unset; scroll-snap-align: unset; scroll-snap-type: unset; shape-image-threshold: unset; shape-margin: unset; shape-outside: unset; shape-rendering: unset; stop-color: unset; stop-opacity: unset; stroke: unset; stroke-dasharray: unset; stroke-dashoffset: unset; stroke-linecap: unset; stroke-linejoin: unset; stroke-miterlimit: unset; stroke-opacity: unset; stroke-width: unset; table-layout: unset; text-align: unset; text-align-last: unset; text-anchor: unset; text-combine-upright: unset; text-decoration: unset; text-indent: unset; text-overflow: unset; text-shadow: unset; text-transform: unset; touch-action: unset; transform: unset; transform-box: unset; transform-origin: unset; transform-style: unset; transition: unset; vector-effect: unset; vertical-align: unset; visibility: unset; border-spacing: unset; -moz-box-align: unset; -moz-box-direction: unset; -moz-box-flex: unset; -moz-box-ordinal-group: unset; -moz-box-orient: unset; -moz-box-pack: unset; -webkit-line-clamp: unset; mask: unset; -webkit-text-fill-color: unset; -webkit-text-stroke: unset; white-space: pre; width: unset; will-change: unset; word-break: unset; word-spacing: unset; z-index: unset;">
</div><div style="color: unset; font-feature-settings: unset; font-kerning: unset; font-optical-sizing: unset; font-size: unset; font-stretch: unset; font-style: unset; font-variant: unset; font-variation-settings: unset; font-weight: unset; text-orientation: unset; text-rendering: unset; writing-mode: unset; place-content: unset; place-items: unset; place-self: unset; animation: unset; backface-visibility: unset; background: unset; background-blend-mode: unset; block-size: unset; border-block: unset; border: unset; border-radius: unset; border-collapse: unset; border-inline: unset; inset: unset; box-shadow: unset; box-sizing: unset; break-after: unset; break-before: unset; break-inside: unset; caption-side: unset; caret-color: unset; clear: unset; clip: unset; clip-path: unset; clip-rule: unset; color-interpolation: unset; color-interpolation-filters: unset; columns: unset; column-fill: unset; gap: unset; column-rule: unset; content: unset; counter-increment: unset; counter-reset: unset; counter-set: unset; cursor: unset; display: unset; dominant-baseline: unset; empty-cells: unset; fill: unset; fill-opacity: unset; fill-rule: unset; filter: unset; flex: unset; flex-flow: unset; float: unset; flood-color: unset; flood-opacity: unset; grid: unset; grid-area: unset; height: unset; hyphens: unset; image-orientation: unset; image-rendering: unset; inline-size: unset; inset-block: unset; inset-inline: unset; isolation: unset; letter-spacing: unset; lighting-color: unset; line-height: unset; list-style: unset; margin-block: unset; margin: unset; margin-inline: unset; marker: unset; mask-type: unset; max-block-size: unset; max-height: unset; max-inline-size: unset; max-width: unset; min-block-size: unset; min-height: unset; min-inline-size: unset; min-width: unset; mix-blend-mode: unset; object-fit: unset; object-position: unset; opacity: unset; order: unset; outline: unset; outline-offset: unset; overflow-anchor: unset; overflow-wrap: unset; overflow: unset; overscroll-behavior: unset; padding-block: unset; padding: unset; padding-inline: unset; paint-order: unset; perspective: unset; perspective-origin: unset; pointer-events: unset; position: unset; quotes: unset; resize: unset; ruby-position: unset; scroll-behavior: unset; scroll-margin-block: unset; scroll-margin: unset; scroll-margin-inline: unset; scroll-padding-block: unset; scroll-padding: unset; scroll-padding-inline: unset; scroll-snap-align: unset; scroll-snap-type: unset; shape-image-threshold: unset; shape-margin: unset; shape-outside: unset; shape-rendering: unset; stop-color: unset; stop-opacity: unset; stroke: unset; stroke-dasharray: unset; stroke-dashoffset: unset; stroke-linecap: unset; stroke-linejoin: unset; stroke-miterlimit: unset; stroke-opacity: unset; stroke-width: unset; table-layout: unset; text-align: unset; text-align-last: unset; text-anchor: unset; text-combine-upright: unset; text-decoration: unset; text-indent: unset; text-overflow: unset; text-shadow: unset; text-transform: unset; touch-action: unset; transform: unset; transform-box: unset; transform-origin: unset; transform-style: unset; transition: unset; vector-effect: unset; vertical-align: unset; visibility: unset; border-spacing: unset; -moz-box-align: unset; -moz-box-direction: unset; -moz-box-flex: unset; -moz-box-ordinal-group: unset; -moz-box-orient: unset; -moz-box-pack: unset; -webkit-line-clamp: unset; mask: unset; -webkit-text-fill-color: unset; -webkit-text-stroke: unset; white-space: pre; width: unset; will-change: unset; word-break: unset; word-spacing: unset; z-index: unset;">
I have not found out yet how to use the new "Scoped Storage" model in native code (C/C++).

The thing is that Google is already creating facts by not supporting the "legacy model" any longer starting from Android 11:
</div><div style="color: unset; font-feature-settings: unset; font-kerning: unset; font-optical-sizing: unset; font-size: unset; font-stretch: unset; font-style: unset; font-variant: unset; font-variation-settings: unset; font-weight: unset; text-orientation: unset; text-rendering: unset; writing-mode: unset; place-content: unset; place-items: unset; place-self: unset; animation: unset; backface-visibility: unset; background: unset; background-blend-mode: unset; block-size: unset; border-block: unset; border: unset; border-radius: unset; border-collapse: unset; border-inline: unset; inset: unset; box-shadow: unset; box-sizing: unset; break-after: unset; break-before: unset; break-inside: unset; caption-side: unset; caret-color: unset; clear: unset; clip: unset; clip-path: unset; clip-rule: unset; color-interpolation: unset; color-interpolation-filters: unset; columns: unset; column-fill: unset; gap: unset; column-rule: unset; content: unset; counter-increment: unset; counter-reset: unset; counter-set: unset; cursor: unset; display: unset; dominant-baseline: unset; empty-cells: unset; fill: unset; fill-opacity: unset; fill-rule: unset; filter: unset; flex: unset; flex-flow: unset; float: unset; flood-color: unset; flood-opacity: unset; grid: unset; grid-area: unset; height: unset; hyphens: unset; image-orientation: unset; image-rendering: unset; inline-size: unset; inset-block: unset; inset-inline: unset; isolation: unset; letter-spacing: unset; lighting-color: unset; line-height: unset; list-style: unset; margin-block: unset; margin: unset; margin-inline: unset; marker: unset; mask-type: unset; max-block-size: unset; max-height: unset; max-inline-size: unset; max-width: unset; min-block-size: unset; min-height: unset; min-inline-size: unset; min-width: unset; mix-blend-mode: unset; object-fit: unset; object-position: unset; opacity: unset; order: unset; outline: unset; outline-offset: unset; overflow-anchor: unset; overflow-wrap: unset; overflow: unset; overscroll-behavior: unset; padding-block: unset; padding: unset; padding-inline: unset; paint-order: unset; perspective: unset; perspective-origin: unset; pointer-events: unset; position: unset; quotes: unset; resize: unset; ruby-position: unset; scroll-behavior: unset; scroll-margin-block: unset; scroll-margin: unset; scroll-margin-inline: unset; scroll-padding-block: unset; scroll-padding: unset; scroll-padding-inline: unset; scroll-snap-align: unset; scroll-snap-type: unset; shape-image-threshold: unset; shape-margin: unset; shape-outside: unset; shape-rendering: unset; stop-color: unset; stop-opacity: unset; stroke: unset; stroke-dasharray: unset; stroke-dashoffset: unset; stroke-linecap: unset; stroke-linejoin: unset; stroke-miterlimit: unset; stroke-opacity: unset; stroke-width: unset; table-layout: unset; text-align: unset; text-align-last: unset; text-anchor: unset; text-combine-upright: unset; text-decoration: unset; text-indent: unset; text-overflow: unset; text-shadow: unset; text-transform: unset; touch-action: unset; transform: unset; transform-box: unset; transform-origin: unset; transform-style: unset; transition: unset; vector-effect: unset; vertical-align: unset; visibility: unset; border-spacing: unset; -moz-box-align: unset; -moz-box-direction: unset; -moz-box-flex: unset; -moz-box-ordinal-group: unset; -moz-box-orient: unset; -moz-box-pack: unset; -webkit-line-clamp: unset; mask: unset; -webkit-text-fill-color: unset; -webkit-text-stroke: unset; white-space: pre; width: unset; will-change: unset; word-break: unset; word-spacing: unset; z-index: unset;"><strong style="box-sizing: inherit; font-weight: 700; margin-top: 0px; color: rgb(191, 54, 12); font-family: Roboto, "Noto Sans", "Noto Sans JP", "Noto Sans KR", "Noto Naskh Arabic", "Noto Sans Thai", "Noto Sans Hebrew", "Noto Sans Bengali", sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">Caution:</strong><span style="box-sizing: inherit; margin-bottom: 0px; color: rgb(191, 54, 12); font-family: Roboto, "Noto Sans", "Noto Sans JP", "Noto Sans KR", "Noto Naskh Arabic", "Noto Sans Thai", "Noto Sans Hebrew", "Noto Sans Bengali", sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><span> </span>After you update your app to target Android 11 (API level 30),<span> </span><a href="https://developer.android.com/about/versions/11/privacy/storage#scoped-storage" style="box-sizing: inherit; color: rgb(191, 54, 12); outline: 0px; text-decoration: underline; word-break: break-word; background: rgb(254, 239, 227);" moz-do-not-send="true">the system ignores the<span> </span><code dir="ltr" style="box-sizing: inherit; background: rgb(254, 239, 227); color: rgb(191, 54, 12); font: 700 12.6px / 1 "Roboto Mono", monospace; padding: 0px; direction: ltr !important; text-align: left !important; word-break: break-word;">requestLegacyExternalStorage</code><span> </span>attribute</a><span> </span>when your app is running on Android 11 devices, so your app must be ready to support scoped storage and to<span> </span><a href="https://developer.android.com/training/data-storage/use-cases#migrate-legacy-storage" style="box-sizing: inherit; color: rgb(191, 54, 12); outline: 0px; text-decoration: underline; word-break: break-word; background: rgb(254, 239, 227);" moz-do-not-send="true">migrate app data</a><span> </span>for users on those devices.</span></div><div style="color: unset; font-feature-settings: unset; font-kerning: unset; font-optical-sizing: unset; font-size: unset; font-stretch: unset; font-style: unset; font-variant: unset; font-variation-settings: unset; font-weight: unset; text-orientation: unset; text-rendering: unset; writing-mode: unset; place-content: unset; place-items: unset; place-self: unset; animation: unset; backface-visibility: unset; background: unset; background-blend-mode: unset; block-size: unset; border-block: unset; border: unset; border-radius: unset; border-collapse: unset; border-inline: unset; inset: unset; box-shadow: unset; box-sizing: unset; break-after: unset; break-before: unset; break-inside: unset; caption-side: unset; caret-color: unset; clear: unset; clip: unset; clip-path: unset; clip-rule: unset; color-interpolation: unset; color-interpolation-filters: unset; columns: unset; column-fill: unset; gap: unset; column-rule: unset; content: unset; counter-increment: unset; counter-reset: unset; counter-set: unset; cursor: unset; display: unset; dominant-baseline: unset; empty-cells: unset; fill: unset; fill-opacity: unset; fill-rule: unset; filter: unset; flex: unset; flex-flow: unset; float: unset; flood-color: unset; flood-opacity: unset; grid: unset; grid-area: unset; height: unset; hyphens: unset; image-orientation: unset; image-rendering: unset; inline-size: unset; inset-block: unset; inset-inline: unset; isolation: unset; letter-spacing: unset; lighting-color: unset; line-height: unset; list-style: unset; margin-block: unset; margin: unset; margin-inline: unset; marker: unset; mask-type: unset; max-block-size: unset; max-height: unset; max-inline-size: unset; max-width: unset; min-block-size: unset; min-height: unset; min-inline-size: unset; min-width: unset; mix-blend-mode: unset; object-fit: unset; object-position: unset; opacity: unset; order: unset; outline: unset; outline-offset: unset; overflow-anchor: unset; overflow-wrap: unset; overflow: unset; overscroll-behavior: unset; padding-block: unset; padding: unset; padding-inline: unset; paint-order: unset; perspective: unset; perspective-origin: unset; pointer-events: unset; position: unset; quotes: unset; resize: unset; ruby-position: unset; scroll-behavior: unset; scroll-margin-block: unset; scroll-margin: unset; scroll-margin-inline: unset; scroll-padding-block: unset; scroll-padding: unset; scroll-padding-inline: unset; scroll-snap-align: unset; scroll-snap-type: unset; shape-image-threshold: unset; shape-margin: unset; shape-outside: unset; shape-rendering: unset; stop-color: unset; stop-opacity: unset; stroke: unset; stroke-dasharray: unset; stroke-dashoffset: unset; stroke-linecap: unset; stroke-linejoin: unset; stroke-miterlimit: unset; stroke-opacity: unset; stroke-width: unset; table-layout: unset; text-align: unset; text-align-last: unset; text-anchor: unset; text-combine-upright: unset; text-decoration: unset; text-indent: unset; text-overflow: unset; text-shadow: unset; text-transform: unset; touch-action: unset; transform: unset; transform-box: unset; transform-origin: unset; transform-style: unset; transition: unset; vector-effect: unset; vertical-align: unset; visibility: unset; border-spacing: unset; -moz-box-align: unset; -moz-box-direction: unset; -moz-box-flex: unset; -moz-box-ordinal-group: unset; -moz-box-orient: unset; -moz-box-pack: unset; -webkit-line-clamp: unset; mask: unset; -webkit-text-fill-color: unset; -webkit-text-stroke: unset; white-space: pre; width: unset; will-change: unset; word-break: unset; word-spacing: unset; z-index: unset;">
</div><div style="color: unset; font-feature-settings: unset; font-kerning: unset; font-optical-sizing: unset; font-size: unset; font-stretch: unset; font-style: unset; font-variant: unset; font-variation-settings: unset; font-weight: unset; text-orientation: unset; text-rendering: unset; writing-mode: unset; place-content: unset; place-items: unset; place-self: unset; animation: unset; backface-visibility: unset; background: unset; background-blend-mode: unset; block-size: unset; border-block: unset; border: unset; border-radius: unset; border-collapse: unset; border-inline: unset; inset: unset; box-shadow: unset; box-sizing: unset; break-after: unset; break-before: unset; break-inside: unset; caption-side: unset; caret-color: unset; clear: unset; clip: unset; clip-path: unset; clip-rule: unset; color-interpolation: unset; color-interpolation-filters: unset; columns: unset; column-fill: unset; gap: unset; column-rule: unset; content: unset; counter-increment: unset; counter-reset: unset; counter-set: unset; cursor: unset; display: unset; dominant-baseline: unset; empty-cells: unset; fill: unset; fill-opacity: unset; fill-rule: unset; filter: unset; flex: unset; flex-flow: unset; float: unset; flood-color: unset; flood-opacity: unset; grid: unset; grid-area: unset; height: unset; hyphens: unset; image-orientation: unset; image-rendering: unset; inline-size: unset; inset-block: unset; inset-inline: unset; isolation: unset; letter-spacing: unset; lighting-color: unset; line-height: unset; list-style: unset; margin-block: unset; margin: unset; margin-inline: unset; marker: unset; mask-type: unset; max-block-size: unset; max-height: unset; max-inline-size: unset; max-width: unset; min-block-size: unset; min-height: unset; min-inline-size: unset; min-width: unset; mix-blend-mode: unset; object-fit: unset; object-position: unset; opacity: unset; order: unset; outline: unset; outline-offset: unset; overflow-anchor: unset; overflow-wrap: unset; overflow: unset; overscroll-behavior: unset; padding-block: unset; padding: unset; padding-inline: unset; paint-order: unset; perspective: unset; perspective-origin: unset; pointer-events: unset; position: unset; quotes: unset; resize: unset; ruby-position: unset; scroll-behavior: unset; scroll-margin-block: unset; scroll-margin: unset; scroll-margin-inline: unset; scroll-padding-block: unset; scroll-padding: unset; scroll-padding-inline: unset; scroll-snap-align: unset; scroll-snap-type: unset; shape-image-threshold: unset; shape-margin: unset; shape-outside: unset; shape-rendering: unset; stop-color: unset; stop-opacity: unset; stroke: unset; stroke-dasharray: unset; stroke-dashoffset: unset; stroke-linecap: unset; stroke-linejoin: unset; stroke-miterlimit: unset; stroke-opacity: unset; stroke-width: unset; table-layout: unset; text-align: unset; text-align-last: unset; text-anchor: unset; text-combine-upright: unset; text-decoration: unset; text-indent: unset; text-overflow: unset; text-shadow: unset; text-transform: unset; touch-action: unset; transform: unset; transform-box: unset; transform-origin: unset; transform-style: unset; transition: unset; vector-effect: unset; vertical-align: unset; visibility: unset; border-spacing: unset; -moz-box-align: unset; -moz-box-direction: unset; -moz-box-flex: unset; -moz-box-ordinal-group: unset; -moz-box-orient: unset; -moz-box-pack: unset; -webkit-line-clamp: unset; mask: unset; -webkit-text-fill-color: unset; -webkit-text-stroke: unset; white-space: pre; width: unset; will-change: unset; word-break: unset; word-spacing: unset; z-index: unset;">
</div><div style="color: unset; font-feature-settings: unset; font-kerning: unset; font-optical-sizing: unset; font-size: unset; font-stretch: unset; font-style: unset; font-variant: unset; font-variation-settings: unset; font-weight: unset; text-orientation: unset; text-rendering: unset; writing-mode: unset; place-content: unset; place-items: unset; place-self: unset; animation: unset; backface-visibility: unset; background: unset; background-blend-mode: unset; block-size: unset; border-block: unset; border: unset; border-radius: unset; border-collapse: unset; border-inline: unset; inset: unset; box-shadow: unset; box-sizing: unset; break-after: unset; break-before: unset; break-inside: unset; caption-side: unset; caret-color: unset; clear: unset; clip: unset; clip-path: unset; clip-rule: unset; color-interpolation: unset; color-interpolation-filters: unset; columns: unset; column-fill: unset; gap: unset; column-rule: unset; content: unset; counter-increment: unset; counter-reset: unset; counter-set: unset; cursor: unset; display: unset; dominant-baseline: unset; empty-cells: unset; fill: unset; fill-opacity: unset; fill-rule: unset; filter: unset; flex: unset; flex-flow: unset; float: unset; flood-color: unset; flood-opacity: unset; grid: unset; grid-area: unset; height: unset; hyphens: unset; image-orientation: unset; image-rendering: unset; inline-size: unset; inset-block: unset; inset-inline: unset; isolation: unset; letter-spacing: unset; lighting-color: unset; line-height: unset; list-style: unset; margin-block: unset; margin: unset; margin-inline: unset; marker: unset; mask-type: unset; max-block-size: unset; max-height: unset; max-inline-size: unset; max-width: unset; min-block-size: unset; min-height: unset; min-inline-size: unset; min-width: unset; mix-blend-mode: unset; object-fit: unset; object-position: unset; opacity: unset; order: unset; outline: unset; outline-offset: unset; overflow-anchor: unset; overflow-wrap: unset; overflow: unset; overscroll-behavior: unset; padding-block: unset; padding: unset; padding-inline: unset; paint-order: unset; perspective: unset; perspective-origin: unset; pointer-events: unset; position: unset; quotes: unset; resize: unset; ruby-position: unset; scroll-behavior: unset; scroll-margin-block: unset; scroll-margin: unset; scroll-margin-inline: unset; scroll-padding-block: unset; scroll-padding: unset; scroll-padding-inline: unset; scroll-snap-align: unset; scroll-snap-type: unset; shape-image-threshold: unset; shape-margin: unset; shape-outside: unset; shape-rendering: unset; stop-color: unset; stop-opacity: unset; stroke: unset; stroke-dasharray: unset; stroke-dashoffset: unset; stroke-linecap: unset; stroke-linejoin: unset; stroke-miterlimit: unset; stroke-opacity: unset; stroke-width: unset; table-layout: unset; text-align: unset; text-align-last: unset; text-anchor: unset; text-combine-upright: unset; text-decoration: unset; text-indent: unset; text-overflow: unset; text-shadow: unset; text-transform: unset; touch-action: unset; transform: unset; transform-box: unset; transform-origin: unset; transform-style: unset; transition: unset; vector-effect: unset; vertical-align: unset; visibility: unset; border-spacing: unset; -moz-box-align: unset; -moz-box-direction: unset; -moz-box-flex: unset; -moz-box-ordinal-group: unset; -moz-box-orient: unset; -moz-box-pack: unset; -webkit-line-clamp: unset; mask: unset; -webkit-text-fill-color: unset; -webkit-text-stroke: unset; white-space: pre; width: unset; will-change: unset; word-break: unset; word-spacing: unset; z-index: unset;">Best regards,
Tobias 
</div></pre>
      </div>
      <div class="moz-cite-prefix"><br>
      </div>
      <div class="moz-cite-prefix">On 1/2/21 4:37 PM, Troy A. Griffitts
        wrote:<br>
      </div>
      <blockquote type="cite"
        cite="mid:7A344555-5749-4582-AD11-E19B967FF968@crosswire.org">
        <meta http-equiv="Content-Type" content="text/html;
          charset=UTF-8">
        It's not used for anything in particular, just as a write test.
        We used to store (I guess we still do) stuff in a [globals]
        section like a directory to scan for new module when SWORD first
        starts up and then it would install those, letting an external
        program or user just dump stuff to a folder, which would get
        install the next time their app started up. That was typically
        used when we supported individual module downloads by users from
        our webserver, but we discourage that now and instead encourage
        use of installmgr.<br>
        <br>
        Anyway, you found exactly the problem. SWORD couldn't write to
        /sdcard/sword.<br>
        <br>
        I suspect maybe file permission?<br>
        <br>
        We should probably all read up on the changes Timmy mentions.<br>
        <br>
        I would try this, remove /sdcard/sword entirely and see what
        Bishop does.<br>
        <br>
        I have had troubles myself making changes to my sdcard, using
        adb shell to cd to /sdcard and mkdir xyz, then using a file
        browser and looking on the sdcard and not seeing my folder. I
        wonder if it has anything to do with the multiple profile
        support, i.e., can one user take a photo to the sdcard and then
        change profiles on the phone and have another user see that
        photo.<br>
        <br>
        Anyway, it seems we need to read and experiment a bit.<br>
        <br>
        Troy<br>
        <br>
        <div class="gmail_quote">On January 2, 2021 2:49:52 AM MST,
          Tobias Klein <a class="moz-txt-link-rfc2396E"
            href="mailto:contact@tklein.info" moz-do-not-send="true"><contact@tklein.info></a>
          wrote:
          <blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt
            0.8ex; border-left: 1px solid rgb(204, 204, 204);
            padding-left: 1ex;">
            <p>Ok!</p>
            <p>Below is a full dump of <tt>adb logcat | grep libsword</tt>.</p>
            <p>Seems like this is the key section, though:<br>
              <br>
              <tt>01-02 10:35:25.259  5450  5538 D libsword.so:
                libsword: init() sword config not found, attempting to
                create parent of: /sdcard/sword/mods.d/globals.conf</tt><tt><br>
              </tt><tt>01-02 10:35:25.260  5450  5538 D libsword.so:
                libsword: init() saving basic:
                /sdcard/sword/mods.d/globals.conf</tt><tt><br>
              </tt><tt>01-02 10:35:25.260  5450  5538 D libsword.so:
                libsword: init() sword config STILL not found,
                attempting to create parent of:
                /data/user/0/org.crosswire.bishop/files/mods.d/globals.conf</tt><tt><br>
              </tt><tt>01-02 10:35:25.262  5450  5538 D libsword.so:
                libsword: init() saving basic:
                /data/user/0/org.crosswire.bishop/files/mods.d/globals.conf</tt></p>
            <p>What is mods.d/globals.conf used for? It seems like this
              file is missing in my existing SWORD file structure.<br>
            </p>
            <p>Best regards,<br>
              Tobias</p>
            <p>Complete log:<br>
            </p>
            <p><tt>01-02 10:35:25.258  5450  5538 I libsword.so: LOOKING
                UP LOCALE DIRECTORY...</tt><tt><br>
              </tt><tt>01-02 10:35:25.258  5450  5538 I libsword.so:
                Checking for provided SWConfig("sword.conf")...</tt><tt><br>
              </tt><tt>01-02 10:35:25.258  5450  5538 I libsword.so:
                Checking working directory for sword.conf...</tt><tt><br>
              </tt><tt>01-02 10:35:25.258  5450  5538 I libsword.so:
                Checking working directory for mods.conf...</tt><tt><br>
              </tt><tt>01-02 10:35:25.258  5450  5538 I libsword.so:
                Checking working directory for mods.d...</tt><tt><br>
              </tt><tt>01-02 10:35:25.258  5450  5538 I libsword.so:
                Checking working directory ../library/ for mods.d...</tt><tt><br>
              </tt><tt>01-02 10:35:25.258  5450  5538 I libsword.so:
                Checking $SWORD_PATH...</tt><tt><br>
              </tt><tt>01-02 10:35:25.258  5450  5538 I libsword.so:
                Parsing /etc/sword.conf:/usr/local/etc/sword.conf...</tt><tt><br>
              </tt><tt>01-02 10:35:25.258  5450  5538 I libsword.so:
                Checking for /etc/sword.conf...</tt><tt><br>
              </tt><tt>01-02 10:35:25.258  5450  5538 I libsword.so:
                Checking for /usr/local/etc/sword.conf...</tt><tt><br>
              </tt><tt>01-02 10:35:25.258  5450  5538 I libsword.so:
                Checking $ALLUSERSPROFILE/Application Data/sword/...</tt><tt><br>
              </tt><tt>01-02 10:35:25.258  5450  5538 I libsword.so:
                Checking $HOME/Library/Application Support/Sword/...</tt><tt><br>
              </tt><tt>01-02 10:35:25.258  5450  5538 I libsword.so:
                Checking home directory for ~/.sword...</tt><tt><br>
              </tt><tt>01-02 10:35:25.259  5450  5538 I libsword.so:
                LOOKING UP LOCALE DIRECTORY COMPLETE.</tt><tt><br>
              </tt><tt>01-02 10:35:25.259  5450  5538 I libsword.so:
                LOOKING UP LOCALE DIRECTORY...</tt><tt><br>
              </tt><tt>01-02 10:35:25.259  5450  5538 I libsword.so:
                Checking for provided SWConfig("sword.conf")...</tt><tt><br>
              </tt><tt>01-02 10:35:25.259  5450  5538 I libsword.so:
                Checking working directory for sword.conf...</tt><tt><br>
              </tt><tt>01-02 10:35:25.259  5450  5538 I libsword.so:
                Checking working directory for mods.conf...</tt><tt><br>
              </tt><tt>01-02 10:35:25.259  5450  5538 I libsword.so:
                Checking working directory for mods.d...</tt><tt><br>
              </tt><tt>01-02 10:35:25.259  5450  5538 I libsword.so:
                Checking working directory ../library/ for mods.d...</tt><tt><br>
              </tt><tt>01-02 10:35:25.259  5450  5538 I libsword.so:
                Checking $SWORD_PATH...</tt><tt><br>
              </tt><tt>01-02 10:35:25.259  5450  5538 I libsword.so:
                Parsing /etc/sword.conf:/usr/local/etc/sword.conf...</tt><tt><br>
              </tt><tt>01-02 10:35:25.259  5450  5538 I libsword.so:
                Checking for /etc/sword.conf...</tt><tt><br>
              </tt><tt>01-02 10:35:25.259  5450  5538 I libsword.so:
                Checking for /usr/local/etc/sword.conf...</tt><tt><br>
              </tt><tt>01-02 10:35:25.259  5450  5538 I libsword.so:
                Checking $ALLUSERSPROFILE/Application Data/sword/...</tt><tt><br>
              </tt><tt>01-02 10:35:25.259  5450  5538 I libsword.so:
                Checking $HOME/Library/Application Support/Sword/...</tt><tt><br>
              </tt><tt>01-02 10:35:25.259  5450  5538 I libsword.so:
                Checking home directory for ~/.sword...</tt><tt><br>
              </tt><tt>01-02 10:35:25.259  5450  5538 I libsword.so:
                LOOKING UP LOCALE DIRECTORY COMPLETE.</tt><tt><br>
              </tt><tt>01-02 10:35:25.259  5450  5538 D libsword.so:
                libsword: init() begin</tt><tt><br>
              </tt><tt>01-02 10:35:25.259  5450  5538 D libsword.so:
                libsword: init() sword config not found, attempting to
                create parent of: /sdcard/sword/mods.d/globals.conf</tt><tt><br>
              </tt><tt>01-02 10:35:25.260  5450  5538 D libsword.so:
                libsword: init() saving basic:
                /sdcard/sword/mods.d/globals.conf</tt><tt><br>
              </tt><tt>01-02 10:35:25.260  5450  5538 D libsword.so:
                libsword: init() sword config STILL not found,
                attempting to create parent of:
                /data/user/0/org.crosswire.bishop/files/mods.d/globals.conf</tt><tt><br>
              </tt><tt>01-02 10:35:25.262  5450  5538 D libsword.so:
                libsword: init() saving basic:
                /data/user/0/org.crosswire.bishop/files/mods.d/globals.conf</tt><tt><br>
              </tt><tt>01-02 10:35:25.263  5450  5538 D libsword.so:
                libsword: extraConfig Exists at path:
                /data/user/0/org.crosswire.bishop/files/extraConfig.conf</tt><tt><br>
              </tt><tt>01-02 10:35:25.263  5450  5538 D libsword.so:
                libsword: init() creating WebMgr using path:
                /data/user/0/org.crosswire.bishop/files</tt><tt><br>
              </tt><tt>01-02 10:35:25.267  5450  5538 I libsword.so:
                Checking at provided path:
                /data/user/0/org.crosswire.bishop/files/...</tt><tt><br>
              </tt><tt>01-02 10:35:25.267  5450  5538 I libsword.so:
                Found mods.d/</tt><tt><br>
              </tt><tt>01-02 10:35:25.267  5450  5538 D libsword.so:
                libsword: WebMgr c-tor(path:
                /data/user/0/org.crosswire.bishop/files, extraConfPath:
/data/user/0/org.crosswire.bishop/files/extraConfig.conf)</tt><tt><br>
              </tt><tt>01-02 10:35:25.267  5450  5538 D libsword.so:
                libsword: WebMgr::c-tor extraConfPath supplied:
                /data/user/0/org.crosswire.bishop/files/extraConfig.conf)</tt><tt><br>
              </tt><tt>01-02 10:35:25.267  5450  5538 I libsword.so:
                LOADING MODULE CONFIGURATIONS...</tt><tt><br>
              </tt><tt>01-02 10:35:25.267  5450  5538 I libsword.so:
                LOADING MODULE CONFIGURATIONS COMPLETE.</tt><tt><br>
              </tt><tt>01-02 10:35:25.267  5450  5538 I libsword.so:
                LOADING MODULE LIBRARY...</tt><tt><br>
              </tt><tt>01-02 10:35:25.268  5450  5538 D libsword.so:
                libsword: WebMgr::createAllModules</tt><tt><br>
              </tt><tt>01-02 10:35:25.268  5450  5538 D libsword.so:
                libsword: WebMgr::createAllModules extraConfig supplied:
/data/user/0/org.crosswire.bishop/files/extraConfig.conf)</tt><tt><br>
              </tt><tt>01-02 10:35:25.268  5450  5538 D libsword.so:
                libsword: WebMgr::createAllModules extraConfig exists.
                Augmenting modules config</tt><tt><br>
              </tt><tt>01-02 10:35:25.269  5450  5538 D libsword.so:
                libsword: SWMgr::createAllModules</tt><tt><br>
              </tt><tt>01-02 10:35:25.269  5450  5538 I libsword.so:
                LOADING MODULE LIBRARY COMPLETE.</tt><tt><br>
              </tt><tt>01-02 10:35:25.269  5450  5538 D libsword.so:
                libsword: init() augmenting modules from:
                /sdcard/Android/data/net.bible.android.activity/files</tt><tt><br>
              </tt><tt>01-02 10:35:25.269  5450  5538 D libsword.so:
                libsword: init() augmenting modules from: /sdcard/sword</tt><tt><br>
              </tt><tt>01-02 10:35:25.269  5450  5538 D libsword.so:
                libsword: init() adding locales from baseDir.</tt><tt><br>
              </tt><tt>01-02 10:35:25.269  5450  5538 D libsword.so:
                LocaleMgr::loadConfigDir loading
                /data/user/0/org.crosswire.bishop/files/locales.d</tt><tt><br>
              </tt><tt>01-02 10:35:25.269  5450  5538 D libsword.so:
                LocaleMgr::loadConfigDir loading
                /data/user/0/org.crosswire.bishop/files/uilocales.d</tt><tt><br>
              </tt><tt>01-02 10:35:25.269  5450  5538 D libsword.so:
                LocaleMgr::loadConfigDir loading /sdcard/sword/locales.d</tt><tt><br>
              </tt><tt>01-02 10:35:25.269  5450  5538 D libsword.so:
                LocaleMgr::loadConfigDir loading
                /sdcard/sword/uilocales.d</tt><tt><br>
              </tt><tt>01-02 10:35:25.269  5450  5538 D libsword.so:
                libsword: init() end.</tt><tt><br>
              </tt><tt>01-02 10:35:25.413  5450  5538 D libsword.so:
                setting STORAGE_BASE to:
                /data/user/0/org.crosswire.bishop/files</tt><tt><br>
              </tt><tt>01-02 10:35:25.416  5450  5538 D libsword.so:
                libsword: init() begin</tt><tt><br>
              </tt><tt>01-02 10:35:25.416  5450  5538 D libsword.so:
                libsword: init() sword config not found, attempting to
                create parent of: /sdcard/sword/mods.d/globals.conf</tt><tt><br>
              </tt><tt>01-02 10:35:25.417  5450  5538 D libsword.so:
                libsword: init() saving basic:
                /sdcard/sword/mods.d/globals.conf</tt><tt><br>
              </tt><tt>01-02 10:35:25.417  5450  5538 D libsword.so:
                libsword: init() sword config STILL not found,
                attempting to create parent of:
                /data/user/0/org.crosswire.bishop/files/mods.d/globals.conf</tt><tt><br>
              </tt><tt>01-02 10:35:25.417  5450  5538 D libsword.so:
                libsword: init() saving basic:
                /data/user/0/org.crosswire.bishop/files/mods.d/globals.conf</tt><tt><br>
              </tt><tt>01-02 10:35:25.417  5450  5538 D libsword.so:
                libsword: extraConfig Exists at path:
                /data/user/0/org.crosswire.bishop/files/extraConfig.conf</tt><tt><br>
              </tt><tt>01-02 10:35:25.417  5450  5538 D libsword.so:
                libsword: init() creating WebMgr using path:
                /data/user/0/org.crosswire.bishop/files</tt><tt><br>
              </tt><tt>01-02 10:35:25.418  5450  5538 I libsword.so:
                Checking at provided path:
                /data/user/0/org.crosswire.bishop/files/...</tt><tt><br>
              </tt><tt>01-02 10:35:25.418  5450  5538 I libsword.so:
                Found mods.d/</tt><tt><br>
              </tt><tt>01-02 10:35:25.418  5450  5538 D libsword.so:
                libsword: WebMgr c-tor(path:
                /data/user/0/org.crosswire.bishop/files, extraConfPath:
/data/user/0/org.crosswire.bishop/files/extraConfig.conf)</tt><tt><br>
              </tt><tt>01-02 10:35:25.418  5450  5538 D libsword.so:
                libsword: WebMgr::c-tor extraConfPath supplied:
                /data/user/0/org.crosswire.bishop/files/extraConfig.conf)</tt><tt><br>
              </tt><tt>01-02 10:35:25.418  5450  5538 I libsword.so:
                LOADING MODULE CONFIGURATIONS...</tt><tt><br>
              </tt><tt>01-02 10:35:25.419  5450  5538 I libsword.so:
                LOADING MODULE CONFIGURATIONS COMPLETE.</tt><tt><br>
              </tt><tt>01-02 10:35:25.419  5450  5538 I libsword.so:
                LOADING MODULE LIBRARY...</tt><tt><br>
              </tt><tt>01-02 10:35:25.419  5450  5538 D libsword.so:
                libsword: WebMgr::createAllModules</tt><tt><br>
              </tt><tt>01-02 10:35:25.419  5450  5538 D libsword.so:
                libsword: WebMgr::createAllModules extraConfig supplied:
/data/user/0/org.crosswire.bishop/files/extraConfig.conf)</tt><tt><br>
              </tt><tt>01-02 10:35:25.419  5450  5538 D libsword.so:
                libsword: WebMgr::createAllModules extraConfig exists.
                Augmenting modules config</tt><tt><br>
              </tt><tt>01-02 10:35:25.419  5450  5538 D libsword.so:
                libsword: SWMgr::createAllModules</tt><tt><br>
              </tt><tt>01-02 10:35:25.419  5450  5538 I libsword.so:
                LOADING MODULE LIBRARY COMPLETE.</tt><tt><br>
              </tt><tt>01-02 10:35:25.419  5450  5538 D libsword.so:
                libsword: init() augmenting modules from:
                /sdcard/Android/data/net.bible.android.activity/files</tt><tt><br>
              </tt><tt>01-02 10:35:25.420  5450  5538 D libsword.so:
                libsword: init() augmenting modules from: /sdcard/sword</tt><tt><br>
              </tt><tt>01-02 10:35:25.420  5450  5538 D libsword.so:
                libsword: init() adding locales from baseDir.</tt><tt><br>
              </tt><tt>01-02 10:35:25.420  5450  5538 D libsword.so:
                LocaleMgr::loadConfigDir loading
                /data/user/0/org.crosswire.bishop/files/locales.d</tt><tt><br>
              </tt><tt>01-02 10:35:25.420  5450  5538 D libsword.so:
                LocaleMgr::loadConfigDir loading
                /data/user/0/org.crosswire.bishop/files/uilocales.d</tt><tt><br>
              </tt><tt>01-02 10:35:25.420  5450  5538 D libsword.so:
                LocaleMgr::loadConfigDir loading /sdcard/sword/locales.d</tt><tt><br>
              </tt><tt>01-02 10:35:25.420  5450  5538 D libsword.so:
                LocaleMgr::loadConfigDir loading
                /sdcard/sword/uilocales.d</tt><tt><br>
              </tt><tt>01-02 10:35:25.420  5450  5538 D libsword.so:
                libsword: init() end.</tt><tt><br>
              </tt><tt>01-02 10:35:25.420  5450  5538 D libsword.so:
                getModInfoList returning 0 length array</tt><tt><br>
              </tt><tt>01-02 10:35:25.456  5450  5538 W libsword.so:
                LocaleMgr::getLocale failed to find locales</tt><tt><br>
              </tt><tt>01-02 10:35:25.460  5450  5538 W libsword.so:
                LocaleMgr::getLocale failed to find locales</tt><br>
            </p>
            <div class="moz-cite-prefix">On 1/1/21 10:57 PM, Troy A.
              Griffitts wrote:<br>
            </div>
            <blockquote type="cite"
              cite="mid:7705424F-5A5A-40A1-A49C-B978DAEFE231@crosswire.org">
              <meta http-equiv="content-type" content="text/html;
                charset=UTF-8">
              Hmmm. That's odd. If you can adb logcat your tablet while
              it is plugged into your laptop and have a look at the
              output when Bishop starts up, it might give us a clue.
              Bishop is pretty noisy to the logs. The detection logic is
              located in init(), here:<br>
              <br>
              <a
href="https://crosswire.org/svn/sword/trunk/bindings/java-jni/jni/swordstub.cpp"
                moz-do-not-send="true">https://crosswire.org/svn/sword/trunk/bindings/java-jni/jni/swordstub.cpp</a><br>
              <br>
              <br>
              <br>
              <div class="gmail_quote">On January 1, 2021 2:18:29 PM
                MST, Tobias Klein <a class="moz-txt-link-rfc2396E"
                  href="mailto:contact@tklein.info"
                  moz-do-not-send="true"><contact@tklein.info></a>
                wrote:
                <blockquote class="gmail_quote" style="margin: 0pt 0pt
                  0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204);
                  padding-left: 1ex;">
                  <div dir="auto">
                    <div dir="auto">Thanks Troy!</div>
                    <div dir="auto"><span style="font-size: 12pt;"><br>
                      </span></div>
                    <div dir="auto"><span style="font-size: 12pt;">I see
                        this working with Bishop on my phone (Android
                        8.1.0). There Bishop reads from and writes to
                        /sdcard/sword.</span></div>
                    <div dir="auto"><br>
                    </div>
                    <div dir="auto">However, it is not working on my
                      Tablet (Android 10). I do have SWORD directories
                      there with this structure:</div>
                    <div dir="auto">/sdcard/sword</div>
                    <div dir="auto">/sdcard/sword/installMgr</div>
                    <div dir="auto">/sdcard/sword/mods.d</div>
                    <div dir="auto">/sdcard/sword/modules</div>
                    <div dir="auto"><br>
                    </div>
                    <div dir="auto">When starting Bishop on the Tablet
                      it asks for permissions and after confirmation it
                      does not show any existing modules based on the
                      structure above.</div>
                    <div dir="auto"><br>
                    </div>
                    <div dir="auto">Best regards,</div>
                    <div dir="auto">Tobias</div>
                    <div dir="auto"><br>
                    </div>
                    <div id="aqm-original" style="color: black;">
                      <!-- body start -->
                      <div class="aqm-original-body">
                        <div style="color: black;">
                          <p style="color: black; font-size: 10pt;
                            font-family: sans-serif; margin: 8pt 0;">Am
                            1. Januar 2021 21:34:00 schrieb "Troy A.
                            Griffitts" <a class="moz-txt-link-rfc2396E"
                              href="mailto:scribe@crosswire.org"
                              moz-do-not-send="true"><scribe@crosswire.org></a>:</p>
                          <blockquote type="cite" class="gmail_quote"
                            style="margin: 0 0 0 0.75ex; border-left:
                            1px solid #808080; padding-left: 0.75ex;">
                            Yes, that's exactly right. Upon install,
                            Bishop asks for permissions to read and
                            right files to /sdcard/sword/. If it is
                            able, it does, if not, it writes to its
                            app’s private data area.<br>
                            <br>
                            I don't believe there is anything like this
                            available on iOS, but I am no expert. I
                            would be interested to learn how iOS handles
                            other common data files which have multiple
                            apps needing the ability to read and write,
                            like photos.<br>
                            <br>
                            Thanks for wanting to coordinate on where
                            files are stored.<br>
                            <br>
                            Troy<br>
                            <br>
                            <div class="gmail_quote">On January 1, 2021
                              1:07:16 PM MST, Tobias Klein <a
                                class="moz-txt-link-rfc2396E"
                                href="mailto:contact@tklein.info"
                                moz-do-not-send="true"><contact@tklein.info></a>
                              wrote:
                              <blockquote class="gmail_quote"
                                style="margin: 0pt 0pt 0pt 0.8ex;
                                border-left: 1px solid rgb(204, 204,
                                204); padding-left: 1ex;">
                                <div dir="auto">
                                  <div dir="auto">Hi Troy!</div>
                                  <div dir="auto"><br>
                                  </div>
                                  Happy new year!
                                  <div dir="auto"><br>
                                  </div>
                                  <div dir="auto">Where does Bishop
                                    store the SWORD data files on
                                    Android? I was browsing the
                                    filesystem but could not find the
                                    respective directory.</div>
                                  <div dir="auto"><br>
                                  </div>
                                  <div dir="auto">I am asking because I
                                    am working on Android support for
                                    node-sword-interface and I wanted to
                                    align this and use a common place
                                    for the SWORD data files. So far I
                                    thought /sdcard/sword would be the
                                    right place.</div>
                                  <div dir="auto"><br>
                                  </div>
                                  <div dir="auto">Best regards,</div>
                                  <div dir="auto">Tobias</div>
                                </div>
                              </blockquote>
                            </div>
                            <br>
                            -- <br>
                            Sent from my Android device with K-9 Mail.
                            Please excuse my brevity.</blockquote>
                        </div>
                      </div>
                      <!-- body end --> </div>
                    <div dir="auto"><br>
                    </div>
                  </div>
                </blockquote>
              </div>
              <br>
              -- <br>
              Sent from my Android device with K-9 Mail. Please excuse
              my brevity. <br>
              <fieldset class="mimeAttachmentHeader"></fieldset>
              <pre class="moz-quote-pre" wrap="">_______________________________________________
sword-devel mailing list: <a class="moz-txt-link-abbreviated" href="mailto:sword-devel@crosswire.org" moz-do-not-send="true">sword-devel@crosswire.org</a>
<a class="moz-txt-link-freetext" href="http://crosswire.org/mailman/listinfo/sword-devel" moz-do-not-send="true">http://crosswire.org/mailman/listinfo/sword-devel</a>
Instructions to unsubscribe/change your settings at above page</pre>
            </blockquote>
          </blockquote>
        </div>
        <br>
        -- <br>
        Sent from my Android device with K-9 Mail. Please excuse my
        brevity. </blockquote>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <pre class="moz-quote-pre" wrap="">_______________________________________________
sword-devel mailing list: <a class="moz-txt-link-abbreviated" href="mailto:sword-devel@crosswire.org">sword-devel@crosswire.org</a>
<a class="moz-txt-link-freetext" href="http://crosswire.org/mailman/listinfo/sword-devel">http://crosswire.org/mailman/listinfo/sword-devel</a>
Instructions to unsubscribe/change your settings at above page</pre>
    </blockquote>
  </body>
</html>