Skip to content

Commit c346384

Browse files
committed
Android R+: request MANAGE_EXTERNAL_STORAGE when creating new git repos
1 parent c3ad698 commit c346384

File tree

2 files changed

+14
-3
lines changed

2 files changed

+14
-3
lines changed

app/src/main/AndroidManifest.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
1818
android:maxSdkVersion="28" />
1919

20+
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
21+
2022
<!-- For BroadcastReceiver below -->
2123
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
2224

app/src/main/java/com/orgzly/android/ui/repos/ReposActivity.kt

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
package com.orgzly.android.ui.repos
22

33
import android.Manifest
4+
import android.content.Intent
45
import android.content.pm.PackageManager
6+
import android.net.Uri
57
import android.os.Build
68
import android.os.Bundle
9+
import android.os.Environment
10+
import android.provider.Settings
711
import android.view.ContextMenu
812
import android.view.MenuItem
913
import android.view.View
@@ -29,6 +33,7 @@ import com.orgzly.android.ui.showSnackbar
2933
import com.orgzly.databinding.ActivityReposBinding
3034
import javax.inject.Inject
3135

36+
3237
/**
3338
* List of user-configured repositories.
3439
*/
@@ -220,14 +225,18 @@ class ReposActivity : CommonActivity(), AdapterView.OnItemClickListener, Activit
220225
}
221226

222227
R.id.repos_options_menu_item_new_git -> {
223-
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R || ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
224-
GitRepoActivity.start(this)
225-
} else {
228+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R && !Environment.isExternalStorageManager()) {
229+
val uri = Uri.parse("package:" + BuildConfig.APPLICATION_ID)
230+
startActivity(
231+
Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION, uri))
232+
} else if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R && ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
226233
// TODO: Show explanation why possibly, if ActivityCompat.shouldShowRequestPermissionRationale() says so?
227234
ActivityCompat.requestPermissions(
228235
this,
229236
arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE),
230237
ACTIVITY_REQUEST_CODE_FOR_READ_WRITE_EXTERNAL_STORAGE)
238+
} else {
239+
GitRepoActivity.start(this)
231240
}
232241
return
233242
}

0 commit comments

Comments
 (0)