diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 3bfe4c41..0878bf22 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -5,8 +5,8 @@
-
-
+
+
diff --git a/app/src/main/java/com/keylesspalace/tusky/ViewMediaActivity.kt b/app/src/main/java/com/keylesspalace/tusky/ViewMediaActivity.kt
index 2a96cb7f..344ca3ac 100644
--- a/app/src/main/java/com/keylesspalace/tusky/ViewMediaActivity.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/ViewMediaActivity.kt
@@ -27,6 +27,7 @@ import android.content.pm.PackageManager
import android.graphics.Bitmap
import android.graphics.Color
import android.net.Uri
+import android.os.Build
import android.os.Bundle
import android.os.Environment
import android.transition.Transition
@@ -212,12 +213,20 @@ class ViewMediaActivity : BaseActivity(), ViewImageFragment.PhotoActionsListener
}
private fun requestDownloadMedia() {
- requestPermissions(arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE)) { _, grantResults ->
- if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
- downloadMedia()
- } else {
- showErrorDialog(binding.toolbar, R.string.error_media_download_permission, R.string.action_retry) { requestDownloadMedia() }
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) {
+ requestPermissions(arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE)) { _, grantResults ->
+ if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
+ downloadMedia()
+ } else {
+ showErrorDialog(
+ binding.toolbar,
+ R.string.error_media_download_permission,
+ R.string.action_retry
+ ) { requestDownloadMedia() }
+ }
}
+ } else {
+ downloadMedia()
}
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/compose/ComposeActivity.kt b/app/src/main/java/com/keylesspalace/tusky/components/compose/ComposeActivity.kt
index a408e217..20d0c483 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/compose/ComposeActivity.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/compose/ComposeActivity.kt
@@ -803,7 +803,7 @@ class ComposeActivity :
// Wait until bottom sheet is not collapsed and show next screen after
if (newState == BottomSheetBehavior.STATE_COLLAPSED) {
addMediaBehavior.removeBottomSheetCallback(this)
- if (ContextCompat.checkSelfPermission(this@ComposeActivity, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q && ContextCompat.checkSelfPermission(this@ComposeActivity, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(
this@ComposeActivity,
arrayOf(Manifest.permission.READ_EXTERNAL_STORAGE),
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/search/fragments/SearchStatusesFragment.kt b/app/src/main/java/com/keylesspalace/tusky/components/search/fragments/SearchStatusesFragment.kt
index b15b9e0f..2c838c77 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/search/fragments/SearchStatusesFragment.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/search/fragments/SearchStatusesFragment.kt
@@ -23,6 +23,7 @@ import android.content.Context
import android.content.Intent
import android.content.pm.PackageManager
import android.net.Uri
+import android.os.Build
import android.os.Environment
import android.util.Log
import android.view.View
@@ -408,13 +409,21 @@ class SearchStatusesFragment : SearchFragment(), Status
}
private fun requestDownloadAllMedia(status: Status) {
- val permissions = arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE)
- (activity as BaseActivity).requestPermissions(permissions) { _, grantResults ->
- if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
- downloadAllMedia(status)
- } else {
- Toast.makeText(context, R.string.error_media_download_permission, Toast.LENGTH_SHORT).show()
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) {
+ val permissions = arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE)
+ (activity as BaseActivity).requestPermissions(permissions) { _, grantResults ->
+ if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
+ downloadAllMedia(status)
+ } else {
+ Toast.makeText(
+ context,
+ R.string.error_media_download_permission,
+ Toast.LENGTH_SHORT
+ ).show()
+ }
}
+ } else {
+ downloadAllMedia(status)
}
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/fragment/SFragment.java b/app/src/main/java/com/keylesspalace/tusky/fragment/SFragment.java
index 9ef26dac..a6d806f0 100644
--- a/app/src/main/java/com/keylesspalace/tusky/fragment/SFragment.java
+++ b/app/src/main/java/com/keylesspalace/tusky/fragment/SFragment.java
@@ -25,6 +25,7 @@ import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
+import android.os.Build;
import android.os.Environment;
import android.util.Log;
import android.view.Menu;
@@ -474,13 +475,17 @@ public abstract class SFragment extends Fragment implements Injectable {
}
private void requestDownloadAllMedia(Status status) {
- String[] permissions = new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE};
- ((BaseActivity) getActivity()).requestPermissions(permissions, (permissions1, grantResults) -> {
- if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
- downloadAllMedia(status);
- } else {
- Toast.makeText(getContext(), R.string.error_media_download_permission, Toast.LENGTH_SHORT).show();
- }
- });
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) {
+ String[] permissions = new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE};
+ ((BaseActivity) getActivity()).requestPermissions(permissions, (permissions1, grantResults) -> {
+ if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
+ downloadAllMedia(status);
+ } else {
+ Toast.makeText(getContext(), R.string.error_media_download_permission, Toast.LENGTH_SHORT).show();
+ }
+ });
+ } else {
+ downloadAllMedia(status);
+ }
}
}