diff --git a/app/src/main/java/app/fedilab/android/activities/SlideMediaActivity.java b/app/src/main/java/app/fedilab/android/activities/SlideMediaActivity.java index e8d322da9..86381e200 100644 --- a/app/src/main/java/app/fedilab/android/activities/SlideMediaActivity.java +++ b/app/src/main/java/app/fedilab/android/activities/SlideMediaActivity.java @@ -41,6 +41,7 @@ import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; +import androidx.annotation.NonNull; import androidx.appcompat.app.ActionBar; import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat; @@ -161,24 +162,20 @@ public class SlideMediaActivity extends BaseFragmentActivity implements OnDownlo media_save.setOnClickListener(view12 -> { int position = mPager.getCurrentItem(); Attachment attachment = attachments.get(position); - if (attachment.getType().compareTo("image") == 0) { - if (Build.VERSION.SDK_INT >= 23) { - if (ContextCompat.checkSelfPermission(SlideMediaActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED || ContextCompat.checkSelfPermission(SlideMediaActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { - ActivityCompat.requestPermissions(SlideMediaActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, Helper.EXTERNAL_STORAGE_REQUEST_CODE); - } else { - Helper.manageMove(SlideMediaActivity.this, attachment.getUrl(), false); - } + if (Build.VERSION.SDK_INT >= 23) { + if (ContextCompat.checkSelfPermission(SlideMediaActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED || ContextCompat.checkSelfPermission(SlideMediaActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { + ActivityCompat.requestPermissions(SlideMediaActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, Helper.EXTERNAL_STORAGE_REQUEST_CODE_MEDIA_SAVE); } else { - Helper.manageMove(SlideMediaActivity.this, attachment.getUrl(), false); - } - } else { - if (Build.VERSION.SDK_INT >= 23) { - if (ContextCompat.checkSelfPermission(SlideMediaActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED || ContextCompat.checkSelfPermission(SlideMediaActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { - ActivityCompat.requestPermissions(SlideMediaActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, Helper.EXTERNAL_STORAGE_REQUEST_CODE); + if (attachment.getType().compareTo("image") == 0) { + Helper.manageMove(SlideMediaActivity.this, attachment.getUrl(), false); } else { Helper.manageDownloadsNoPopup(SlideMediaActivity.this, attachment.getUrl()); downloadID = -1; } + } + } else { + if (attachment.getType().compareTo("image") == 0) { + Helper.manageMove(SlideMediaActivity.this, attachment.getUrl(), false); } else { Helper.manageDownloadsNoPopup(SlideMediaActivity.this, attachment.getUrl()); downloadID = -1; @@ -196,7 +193,7 @@ public class SlideMediaActivity extends BaseFragmentActivity implements OnDownlo } else { if (Build.VERSION.SDK_INT >= 23) { if (ContextCompat.checkSelfPermission(SlideMediaActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED || ContextCompat.checkSelfPermission(SlideMediaActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { - ActivityCompat.requestPermissions(SlideMediaActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, Helper.EXTERNAL_STORAGE_REQUEST_CODE); + ActivityCompat.requestPermissions(SlideMediaActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, Helper.EXTERNAL_STORAGE_REQUEST_CODE_MEDIA_SHARE); } else { downloadID = Helper.manageDownloadsNoPopup(SlideMediaActivity.this, attachment.getUrl()); } @@ -280,6 +277,31 @@ public class SlideMediaActivity extends BaseFragmentActivity implements OnDownlo } + @Override + public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { + switch (requestCode) { + case Helper.EXTERNAL_STORAGE_REQUEST_CODE_MEDIA_SAVE: + if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { + int position = mPager.getCurrentItem(); + Attachment attachment = attachments.get(position); + if (attachment.getType().compareTo("image") == 0) { + Helper.manageMove(SlideMediaActivity.this, attachment.getUrl(), false); + } else { + Helper.manageDownloadsNoPopup(SlideMediaActivity.this, attachment.getUrl()); + downloadID = -1; + } + } else { /*Todo: Toast "Storage Permission Required" */ } + return; + case Helper.EXTERNAL_STORAGE_REQUEST_CODE_MEDIA_SHARE: + if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { + int position = mPager.getCurrentItem(); + Attachment attachment = attachments.get(position); + downloadID = Helper.manageDownloadsNoPopup(SlideMediaActivity.this, attachment.getUrl()); + } else { /*Todo: Toast "Storage Permission Required" */ } + break; + } + } + @Override public boolean dispatchTouchEvent(MotionEvent event) { diff --git a/app/src/main/java/app/fedilab/android/helper/Helper.java b/app/src/main/java/app/fedilab/android/helper/Helper.java index d8bcab3a8..97992e638 100644 --- a/app/src/main/java/app/fedilab/android/helper/Helper.java +++ b/app/src/main/java/app/fedilab/android/helper/Helper.java @@ -266,6 +266,8 @@ public class Helper { public static final String REDIRECT_CONTENT = "urn:ietf:wg:oauth:2.0:oob"; public static final String REDIRECT_CONTENT_WEB = "mastalab://backtomastalab"; public static final int EXTERNAL_STORAGE_REQUEST_CODE = 84; + public static final int EXTERNAL_STORAGE_REQUEST_CODE_MEDIA_SAVE = 85; + public static final int EXTERNAL_STORAGE_REQUEST_CODE_MEDIA_SHARE = 86; //Thekinrar's API: https://instances.social/api/doc/ public static final String THEKINRAR_SECRET_TOKEN = "jGj9gW3z9ptyIpB8CMGhAlTlslcemMV6AgoiImfw3vPP98birAJTHOWiu5ZWfCkLvcaLsFZw9e3Pb7TIwkbIyrj3z6S7r2oE6uy6EFHvls3YtapP8QKNZ980p9RfzTb4";