mirror of
https://github.com/nextcloud/android.git
synced 2024-11-22 05:05:31 +03:00
Ask for permission in UploadFilesActivity
Signed-off-by: tobiasKaminsky <tobias@kaminsky.me>
This commit is contained in:
parent
b3b1b8dbc0
commit
5ebf79697d
1 changed files with 47 additions and 2 deletions
|
@ -24,6 +24,7 @@ import android.accounts.Account;
|
|||
import android.annotation.SuppressLint;
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.os.Bundle;
|
||||
import android.os.Environment;
|
||||
import android.view.Menu;
|
||||
|
@ -36,6 +37,7 @@ import android.widget.Spinner;
|
|||
import android.widget.TextView;
|
||||
|
||||
import com.google.android.material.button.MaterialButton;
|
||||
import com.google.android.material.snackbar.Snackbar;
|
||||
import com.nextcloud.client.di.Injectable;
|
||||
import com.nextcloud.client.preferences.AppPreferences;
|
||||
import com.owncloud.android.R;
|
||||
|
@ -50,10 +52,13 @@ import com.owncloud.android.ui.dialog.LocalStoragePathPickerDialogFragment;
|
|||
import com.owncloud.android.ui.dialog.SortingOrderDialogFragment;
|
||||
import com.owncloud.android.ui.fragment.ExtendedListFragment;
|
||||
import com.owncloud.android.ui.fragment.LocalFileListFragment;
|
||||
import com.owncloud.android.utils.DisplayUtils;
|
||||
import com.owncloud.android.utils.FileSortOrder;
|
||||
import com.owncloud.android.utils.PermissionUtil;
|
||||
import com.owncloud.android.utils.theme.ThemeButtonUtils;
|
||||
import com.owncloud.android.utils.theme.ThemeColorUtils;
|
||||
import com.owncloud.android.utils.theme.ThemeDrawableUtils;
|
||||
import com.owncloud.android.utils.theme.ThemeSnackbarUtils;
|
||||
import com.owncloud.android.utils.theme.ThemeToolbarUtils;
|
||||
import com.owncloud.android.utils.theme.ThemeUtils;
|
||||
|
||||
|
@ -301,7 +306,7 @@ public class UploadFilesActivity extends DrawerActivity implements LocalFileList
|
|||
setSelectAllMenuItem(item, mSelectAll);
|
||||
mFileListFragment.selectAllFiles(item.isChecked());
|
||||
} else if (itemId == R.id.action_choose_storage_path) {
|
||||
showLocalStoragePathPickerDialog();
|
||||
checkLocalStoragePathPickerPermission();
|
||||
} else {
|
||||
retval = super.onOptionsItemSelected(item);
|
||||
}
|
||||
|
@ -309,6 +314,29 @@ public class UploadFilesActivity extends DrawerActivity implements LocalFileList
|
|||
return retval;
|
||||
}
|
||||
|
||||
private void checkLocalStoragePathPickerPermission() {
|
||||
if (!PermissionUtil.checkExternalStoragePermission(this)) {
|
||||
// Check if we should show an explanation
|
||||
if (PermissionUtil.shouldShowRequestPermissionRationale(this,
|
||||
PermissionUtil.getExternalStoragePermission())) {
|
||||
// Show explanation to the user and then request permission
|
||||
Snackbar snackbar = Snackbar.make(findViewById(android.R.id.content),
|
||||
R.string.permission_storage_access,
|
||||
Snackbar.LENGTH_INDEFINITE)
|
||||
.setAction(R.string.common_ok, v -> PermissionUtil.requestExternalStoragePermission(this));
|
||||
ThemeSnackbarUtils.colorSnackbar(this, snackbar);
|
||||
snackbar.show();
|
||||
} else {
|
||||
// No explanation needed, request the permission.
|
||||
PermissionUtil.requestExternalStoragePermission(this);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
showLocalStoragePathPickerDialog();
|
||||
}
|
||||
|
||||
private void showLocalStoragePathPickerDialog() {
|
||||
FragmentManager fm = getSupportFragmentManager();
|
||||
FragmentTransaction ft = fm.beginTransaction();
|
||||
|
@ -317,6 +345,23 @@ public class UploadFilesActivity extends DrawerActivity implements LocalFileList
|
|||
dialog.show(ft, LocalStoragePathPickerDialogFragment.LOCAL_STORAGE_PATH_PICKER_FRAGMENT);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRequestPermissionsResult(int requestCode,
|
||||
@NonNull String[] permissions,
|
||||
@NonNull int[] grantResults) {
|
||||
|
||||
if (requestCode == PermissionUtil.PERMISSIONS_EXTERNAL_STORAGE) {
|
||||
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
|
||||
// permission was granted
|
||||
showLocalStoragePathPickerDialog();
|
||||
} else {
|
||||
DisplayUtils.showSnackMessage(this, R.string.permission_storage_access);
|
||||
}
|
||||
} else {
|
||||
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSortingOrderChosen(FileSortOrder selection) {
|
||||
preferences.setSortOrder(FileSortOrder.Type.uploadFilesView, selection);
|
||||
|
@ -347,7 +392,7 @@ public class UploadFilesActivity extends DrawerActivity implements LocalFileList
|
|||
|
||||
File parentFolder = mCurrentDir.getParentFile();
|
||||
if (!parentFolder.canRead()) {
|
||||
showLocalStoragePathPickerDialog();
|
||||
checkLocalStoragePathPickerPermission();
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue