Browse Source

Add dialog to inform the user of storage permission

Signed-off-by: Álvaro Brey Vilas <alvaro.brey@nextcloud.com>
Álvaro Brey Vilas 3 năm trước cách đây
mục cha
commit
361ed24bb4

+ 0 - 12
src/main/java/com/owncloud/android/ui/activity/FileActivity.java

@@ -926,16 +926,4 @@ public abstract class FileActivity extends DrawerActivity
             ((FileDetailFragment) fragment).showHideFragmentView(false);
         }
     }
-
-    @Override
-    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
-        super.onActivityResult(requestCode, resultCode, data);
-        if (requestCode == PermissionUtil.REQUEST_CODE_MANAGE_ALL_FILES) {
-            // if the user denies manage storage, ask it again
-            Toast.makeText(this, R.string.file_management_permission_denied, Toast.LENGTH_SHORT).show();
-            if (!PermissionUtil.checkExternalStoragePermission(this)) {
-                PermissionUtil.requestExternalStoragePermission(this);
-            }
-        }
-    }
 }

+ 1 - 1
src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.java

@@ -48,9 +48,9 @@ import android.view.MenuItem;
 import android.view.View;
 import android.view.ViewTreeObserver;
 import android.view.WindowManager;
+import android.widget.Toast;
 
 import com.google.android.material.appbar.AppBarLayout;
-import com.google.android.material.floatingactionbutton.FloatingActionButton;
 import com.google.android.material.snackbar.Snackbar;
 import com.nextcloud.client.account.User;
 import com.nextcloud.client.appinfo.AppInfo;

+ 15 - 5
src/main/java/com/owncloud/android/utils/PermissionUtil.kt

@@ -31,8 +31,10 @@ import android.os.Build
 import android.os.Environment
 import android.provider.Settings
 import androidx.annotation.RequiresApi
+import androidx.appcompat.app.AlertDialog
 import androidx.core.app.ActivityCompat
 import androidx.core.content.ContextCompat
+import com.owncloud.android.R
 
 /**
  * Created by scherzia on 29.12.2015.
@@ -115,11 +117,19 @@ object PermissionUtil {
 
     @RequiresApi(Build.VERSION_CODES.R)
     private fun requestManageFilesPermission(activity: Activity) {
-        val intent = Intent().apply {
-            action = Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION
-            data = Uri.parse("package:${activity.applicationContext.packageName}")
-        }
-        activity.startActivityForResult(intent, REQUEST_CODE_MANAGE_ALL_FILES)
+        AlertDialog.Builder(activity, R.style.Theme_ownCloud_Dialog)
+            .setTitle(R.string.file_management_permission)
+            .setMessage(R.string.file_management_permission_text)
+            .setCancelable(false)
+            .setPositiveButton(R.string.common_ok) { dialog, _ ->
+                val intent = Intent().apply {
+                    action = Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION
+                    data = Uri.parse("package:${activity.applicationContext.packageName}")
+                }
+                activity.startActivityForResult(intent, REQUEST_CODE_MANAGE_ALL_FILES)
+                dialog.dismiss()
+            }
+            .show()
     }
 
     /**

+ 2 - 1
src/main/res/values/strings.xml

@@ -1005,5 +1005,6 @@
     <string name="whats_new_storage_sdk30_title">Changes in storage access from Android 11</string>
     <string name="whats_new_storage_sdk30_content">From Android 11 onwards, strict storage access control is enforced.\n\nAs a consequence, Nextcloud will no longer be able to write or delete files on external storage, or read files in private folders owned by other apps.</string>
     <string name="whats_new_storage_sdk30_content_page2">Please check your auto upload items and verify that Nextcloud still has read access to the local folder.\n\nAdditionally, other applications will not be able to read Nextcloud\'s downloaded files directly from the external storage.</string>
-    <string name="file_management_permission_denied">File management permission is required to use Nextcloud. Please enable it to continue.</string>
+    <string name="file_management_permission">Permissions needed</string>
+    <string name="file_management_permission_text">Nextcloud needs file management permissions to work properly. Please enable it in the following screen to continue.</string>
 </resources>