@@ -14,6 +14,7 @@ import android.content.Context
1414import android.content.Intent
1515import android.content.pm.PackageManager
1616import android.content.pm.ResolveInfo
17+ import android.net.Uri
1718import android.os.Build
1819import android.os.Environment
1920import android.provider.Settings
@@ -22,8 +23,10 @@ import androidx.appcompat.app.AppCompatActivity
2223import androidx.core.app.ActivityCompat
2324import androidx.core.content.ContextCompat
2425import androidx.core.net.toUri
26+ import com.google.android.material.snackbar.Snackbar
2527import com.nextcloud.client.preferences.AppPreferences
2628import com.nextcloud.client.preferences.AppPreferencesImpl
29+ import com.owncloud.android.R
2730import com.owncloud.android.lib.common.utils.Log_OC
2831import com.owncloud.android.ui.dialog.StoragePermissionDialogFragment
2932import com.owncloud.android.utils.PermissionUtil.PERMISSIONS_EXTERNAL_STORAGE
@@ -119,11 +122,12 @@ object PermissionUtil {
119122
120123 @Suppress(" DEPRECATION" )
121124 val preferences: AppPreferences = AppPreferencesImpl .fromContext(activity)
125+ if (preferences.isStoragePermissionRequested) {
126+ showPermissionDeniedSnackbar(activity)
127+ return
128+ }
122129
123- if (! preferences.isStoragePermissionRequested &&
124- Build .VERSION .SDK_INT >= Build .VERSION_CODES .R &&
125- canRequestAllFilesPermission(activity)
126- ) {
130+ if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .R && canRequestAllFilesPermission(activity)) {
127131 showStoragePermissionDialogFragment(activity, showStrictText)
128132 } else {
129133 requestStoragePermissions(activity, preferences.isStoragePermissionRequested)
@@ -137,6 +141,21 @@ object PermissionUtil {
137141 }
138142 }
139143
144+ fun showPermissionDeniedSnackbar (activity : AppCompatActivity ) {
145+ Snackbar .make(
146+ activity.findViewById(android.R .id.content),
147+ R .string.permission_storage_access, Snackbar .LENGTH_SHORT
148+ )
149+ .setAction(R .string.actionbar_settings) { v ->
150+ val intent = Intent (Settings .ACTION_APPLICATION_DETAILS_SETTINGS ).apply {
151+ data = Uri .fromParts(" package" , activity.packageName, null )
152+ }
153+
154+ activity.startActivity(intent)
155+ }
156+ .show()
157+ }
158+
140159 private fun getStoragePermissions () = when {
141160 Build .VERSION .SDK_INT >= Build .VERSION_CODES .UPSIDE_DOWN_CAKE -> arrayOf(
142161 Manifest .permission.READ_MEDIA_VISUAL_USER_SELECTED ,
0 commit comments