handle new READ_MEDIA_VISUAL_USER_SELECTED permission.

now the app no longer forces media permission to run
This commit is contained in:
fatih ergin 2023-08-05 21:00:06 +03:00
parent c97f3f89e6
commit 3d09de6939
3 changed files with 32 additions and 29 deletions

View File

@ -21,6 +21,7 @@
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
<uses-permission android:name="android.permission.READ_MEDIA_VISUAL_USER_SELECTED" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

View File

@ -225,30 +225,25 @@ class MainActivity : SimpleActivity(), PhotoProcessor.MediaSavedListener, Camera
private fun tryInitCamera() {
handlePermission(PERMISSION_CAMERA) { grantedCameraPermission ->
if (grantedCameraPermission) {
handleStoragePermission { grantedStoragePermission ->
if (grantedStoragePermission) {
val isInPhotoMode = isInPhotoMode()
if (isInPhotoMode) {
initializeCamera(true)
} else {
handlePermission(PERMISSION_RECORD_AUDIO) { grantedRecordAudioPermission ->
if (grantedRecordAudioPermission) {
initializeCamera(false)
handleStoragePermission {
val isInPhotoMode = isInPhotoMode()
if (isInPhotoMode) {
initializeCamera(true)
} else {
handlePermission(PERMISSION_RECORD_AUDIO) { grantedRecordAudioPermission ->
if (grantedRecordAudioPermission) {
initializeCamera(false)
} else {
toast(com.simplemobiletools.commons.R.string.no_audio_permissions)
if (isThirdPartyIntent()) {
finish()
} else {
toast(com.simplemobiletools.commons.R.string.no_audio_permissions)
if (isThirdPartyIntent()) {
finish()
} else {
// re-initialize in photo mode
config.initPhotoMode = true
tryInitCamera()
}
// re-initialize in photo mode
config.initPhotoMode = true
tryInitCamera()
}
}
}
} else {
toast(com.simplemobiletools.commons.R.string.no_storage_permissions)
finish()
}
}
} else {
@ -270,13 +265,12 @@ class MainActivity : SimpleActivity(), PhotoProcessor.MediaSavedListener, Camera
private fun handleStoragePermission(callback: (granted: Boolean) -> Unit) {
if (isTiramisuPlus()) {
handlePermission(PERMISSION_READ_MEDIA_IMAGES) { grantedReadImages ->
if (grantedReadImages) {
handlePermission(PERMISSION_READ_MEDIA_VIDEO, callback)
} else {
callback.invoke(false)
}
val mediaPermissionIds = mutableListOf(PERMISSION_READ_MEDIA_IMAGES, PERMISSION_READ_MEDIA_VIDEO)
if (isUpsideDownCakePlus()) {
mediaPermissionIds.add(PERMISSION_READ_MEDIA_VISUAL_USER_SELECTED)
}
handlePartialMediaPermissions(permissionIds = mediaPermissionIds, callback = callback)
} else {
handlePermission(PERMISSION_WRITE_STORAGE, callback)
}
@ -574,7 +568,11 @@ class MainActivity : SimpleActivity(), PhotoProcessor.MediaSavedListener, Camera
private fun hasPhotoModePermissions(): Boolean {
return if (isTiramisuPlus()) {
hasPermission(PERMISSION_READ_MEDIA_IMAGES) && hasPermission(PERMISSION_READ_MEDIA_VIDEO) && hasPermission(PERMISSION_CAMERA)
var hasMediaPermission = hasPermission(PERMISSION_READ_MEDIA_IMAGES) || hasPermission(PERMISSION_READ_MEDIA_VIDEO)
if (isUpsideDownCakePlus()) {
hasMediaPermission = hasMediaPermission || hasPermission(PERMISSION_READ_MEDIA_VISUAL_USER_SELECTED)
}
hasMediaPermission && hasPermission(PERMISSION_CAMERA)
} else {
hasPermission(PERMISSION_WRITE_STORAGE) && hasPermission(PERMISSION_CAMERA)
}
@ -582,7 +580,11 @@ class MainActivity : SimpleActivity(), PhotoProcessor.MediaSavedListener, Camera
private fun hasVideoModePermissions(): Boolean {
return if (isTiramisuPlus()) {
hasPermission(PERMISSION_READ_MEDIA_VIDEO) && hasPermission(PERMISSION_CAMERA) && hasPermission(PERMISSION_RECORD_AUDIO)
var hasMediaPermission = hasPermission(PERMISSION_READ_MEDIA_VIDEO)
if (isUpsideDownCakePlus()) {
hasMediaPermission = hasMediaPermission || hasPermission(PERMISSION_READ_MEDIA_VISUAL_USER_SELECTED)
}
hasMediaPermission && hasPermission(PERMISSION_CAMERA) && hasPermission(PERMISSION_RECORD_AUDIO)
} else {
hasPermission(PERMISSION_WRITE_STORAGE) && hasPermission(PERMISSION_CAMERA) && hasPermission(PERMISSION_RECORD_AUDIO)
}

View File

@ -9,7 +9,7 @@ androidx-window = "1.2.0-beta01"
androidx-camera = "1.3.0-beta02"
androidx-ktx = "2.6.1"
#Simple tools
simple-commons = "53ad279f5e"
simple-commons = "d1629c7f1a"
#Gradle
gradlePlugins-agp = "8.1.0"
#build