Android 6.0 permissions and mounting OBB
<p>I have a problem with permissions on Android 6.0 and higher.</p>

<p>The game I'm working on was using the WRITE_EXTERNAL_STORAGE permission. On Android 6.0 and higher the alert which asks a user to allow it had to be displayed.</p>

<p>I've received a request to get rid of this alert, which means, the game cannot use WRITE_EXTERNAL_STORAGE anymore.</p>

<p>Technically the game is not writing and reading the external storage anywhere right now. All saves and cached files are stored in the application-specific directory (/storage/emulated/0/Android/data/com.company.productname)
But, the game has to read (and sometimes download) the OBB file, which is stored in /storage/emulated/0/Android/obb/com.company.productname directory.</p>

<p>The game has an access to this directory, even without WRITE_EXTERNAL_STORAGE or READ_EXTERNAL_STORAGE on devices:</p>

<ul>
<li>Motorola Nexus 6</li>
<li>LG Nexus 5</li>
</ul>

<p>But it seems it doesn't have na access to this directory on:</p>

<ul>
<li>Samsung Galaxy S5, S6 and S7</li>
<li>Nvidia Shield tablet</li>
</ul>

<p>I've checked it even using the Alpha Tests in order to simulate downloading the game from the store.</p>

<p>When the permission to the Storage is given (via App Settings) then everything runs fine.</p>

<p>How the OBB is mounted?</p>

<p>The Unreal Engine 4, which I use, is using the C open() function to handle the OBB file:</p>

<pre><code>int32 Handle = open(LocalPath, O_RDONLY);
</code></pre>

<p>Where LocalPath is a full path to the obb file: /storage/emulated/0/Android/obb/com.company.productname/main.10003.com.company.productname.obb</p>

<p><strong>The questions are:</strong></p>

<ol>
<li>Does the game need a READ/WRITE _EXTERNAL_STORAGE in order to read and download OBB file?</li>
<li>If yes, then how can I possibly get rid of the alert which asks the user for permissions.</li>
<li>If no, then why Samsung Galaxy S series make such troubles?</li>
</ol>