code: private static PathStrategy parsePathStrategy(Context context, String authority)
        throws IOException, XmlPullParserException {
      final SimplePathStrategy strat = new SimplePathStrategy(authority);
  
      final ProviderInfo info =
          context.getPackageManager().resolveContentProvider(authority, PackageManager.GET_META_DATA);
      final XmlResourceParser in =
          info.loadXmlMetaData(context.getPackageManager(), META_DATA_FILE_PROVIDER_PATHS);
      if (in == null) {
        throw new IllegalArgumentException("Missing " + META_DATA_FILE_PROVIDER_PATHS + " meta-data");
      }
  
      int type;
      while ((type = in.next()) != END_DOCUMENT) {
        if (type == START_TAG) {
          final String tag = in.getName();
  
          final String name = in.getAttributeValue(null, ATTR_NAME);
          String path = in.getAttributeValue(null, ATTR_PATH);
  
          File target = null;
          if (TAG_ROOT_PATH.equals(tag)) {
            target = buildPath(DEVICE_ROOT, path);
          } else if (TAG_FILES_PATH.equals(tag)) {
            target = buildPath(context.getFilesDir(), path);
          } else if (TAG_CACHE_PATH.equals(tag)) {
            target = buildPath(context.getCacheDir(), path);
          } else if (TAG_EXTERNAL.equals(tag)) {
            target = buildPath(Environment.getExternalStorageDirectory(), path);
          } else if (TAG_EXTERNAL_APP.equals(tag)) {
            target = buildPath(context.getExternalFilesDir(null), path);
          }
  
          if (target != null) {
            strat.addRoot(name, target);
          }
        }
      }
  
      return strat;
    }
docs: Parse and return {@link PathStrategy} for given authority as defined in
  {@link #META_DATA_FILE_PROVIDER_PATHS} {@code &lt;meta-data>}.
  
  @see #getPathStrategy(Context, String)