mirror of
				https://github.com/SimpleMobileTools/Simple-Camera.git
				synced 2025-06-27 09:02:59 +02:00 
			
		
		
		
	handle new READ_MEDIA_VISUAL_USER_SELECTED permission.
now the app no longer forces media permission to run
This commit is contained in:
		@@ -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" />
 | 
			
		||||
 
 | 
			
		||||
@@ -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)
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user