Before targetting android O code below worked perfectly. After setting targetApi=27 (8.1) this stopped working.
context.requestPermissions(new String[]{
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE},
requestCode);
I am presented with a permission dialog we all know, I gladly allow App to access photos media and files on a device.
and in onRequestPermissionResult()
it returns
android.permission.READ_EXTERNAL_STORAGE == 0,
android.permission.WRITE_EXTERNAL_STORAGE == -1
I followed this answer https://stackoverflow.com/a/48353465/4858147 didn't work.
While I was looking for a solution, found this https://developer.android.com/about/versions/oreo/android-8.0-changes.html#rmp I wasn't cleverer after reading this, but I am 100% sure this is causing it.
If the app targets Android 8.0 (API level 26), the system grants only READ_EXTERNAL_STORAGE at that time; however, if the app later requests WRITE_EXTERNAL_STORAGE, the system immediately grants that privilege without prompting the user.
I tried asking only for read permission (dialog-> allow) and later I asked for write permission (no dialog -> still not granted) it didn't work.
manifest:
<!-- Internet Permissions -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- I added now, -->
<uses-permission android:name="android.permission.CAMERA"/>
<!-- Storage Permissions -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<!-- Account Access Permission -->
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<!-- Vibrate used for notification updates -->
<uses-permission android:name="android.permission.VIBRATE" />
I need permission for this
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
intent.putExtra("output", outputDestination);
Okay so I finally know what's happening, after reading https://stackoverflow.com/a/49709872/4858147 I was finally able to continue.
Problem was that HockeyApp had in manifest:
and after manifests were merged there was no WRITE_EXTERNAL_STORAGE permission in app. The app worked before thanks to a bug in an android system
It worked before thanks to bug in Android system, because we asked for read permission
All I did was that in my main App manifest I changed