title: Android: URL.createObjectURL does not work properly (Failed to load because no supported source was found.)
body: <p>I am trying to play an audio file that has been stored in LocalForage of my Meteor Android App. </p>
  
  <pre><code>LocalForage.getItem(track_id, (err, value)=&gt;{
      if(err)
          throw err;
      //the loaded value is an arraybuffer of an m4a file
      let blob = new Blob([value]);
      let url = (window.URL || window.webkitURL || window || {}).createObjectURL(blob);
      let testAudio = new Audio(url);
      testAudio.play().then(()=&gt;{console.log("play successful")}).catch((err)=&gt;{console.error(err)});
  });
  </code></pre>
  
  <p>Before, I passed the url to an Instance of Howler.js, but to make it easier to comprehend what's happening, I added testAudio.</p>
  
  <p>When testing in a browser (Chrome), the code works as it should. The url is created and the Audio is playing.</p>
  
  <p>Android (using Chromium as all Meteor Android Apps) however, does not seem to like my approach:
  When creating the Object URL, Chromium returns an URL like this:</p>
  
  <pre><code>blob:http%3A//localhost%3A12128/4de4516a-2989-4e99-9269-0beff4517fc4
  </code></pre>
  
  <p>As you can see, this is not a usable URL, and even if I do this</p>
  
  <pre><code>url = url.replace(/%3A/g, ':');
  </code></pre>
  
  <p>The resulting console output is </p>
  
  <pre><code>DOMException: Failed to load because no supported source was found.
  </code></pre>
  
  <p>Does anyone have an idea why this does not work on Android? I've taken a look at other questions here with the same problem, but my code looks right to me and works when tested in Chrome, so I really don't know how to approach this.</p>
  
  <p>By the way, the Audiobuffer is saved like so:</p>
  
  <pre><code>const request = new window.XMLHttpRequest();
  request.addEventListener('readystatechange', () =&gt; {
      if (request.readyState === 4) {                      
          LocalForage.setItem(track.file_id, request.response, (err, value) =&gt; {             
              console.log('Successfully saved to locale forage: ' + track.name);                            
          })
      }        
  });
  
  request.open('GET', track.audioLink, true);
  request.responseType = 'arraybuffer';    
  request.send();
  </code></pre>