title: Test programmatically if in Android 10+ the legacy external storage access is disabled
body: <p>Is there a simple API call that would tell me if an app running on Android 10 or later must use Scoped Storage access, that is, if the normal file access, a.k.a. "Legacy External Storage" is disabled? Note that even if the app in AndroidManifest.xml,  section declared:</p>
  
  <pre><code>  android:requestLegacyExternalStorage="true"
  </code></pre>
  
  <p>the file access may still be denied due to Google policy changes in the future, so testing this value is useless. The only way I found is to test if the external storage root directory is readable, but for that, the app must first ask for Storage permission, which is useless for anything else, if legacy storage is disabled.</p>
  
  <pre><code>public static boolean mustUseScopedStorage() {
      // Impractical must first ask for useless Storage permission...
      File exSD = Environment.getExternalStorageDirectory();
      return !exSD.canRead(); // this test works only if Storage permission was granted.
  }
  </code></pre>
  
  <p>I think I have once seen a new API to detect this, but cannot find that article anymore...</p>