From 37ea6f9a1da0fdcda4c960f5a11392602f7007ca Mon Sep 17 00:00:00 2001 From: Siva Subramaniam Date: Thu, 1 Jun 2023 16:24:37 +0530 Subject: [PATCH] Request notification permission on Android 13 and above --- .../main/java/com/fmsys/snapdrop/MainActivity.java | 11 +++++++++++ app/src/main/res/values/strings.xml | 4 ++++ 2 files changed, 15 insertions(+) diff --git a/app/src/main/java/com/fmsys/snapdrop/MainActivity.java b/app/src/main/java/com/fmsys/snapdrop/MainActivity.java index ccdeea40..9d6cf87e 100644 --- a/app/src/main/java/com/fmsys/snapdrop/MainActivity.java +++ b/app/src/main/java/com/fmsys/snapdrop/MainActivity.java @@ -138,6 +138,7 @@ public void onReceive(final Context context, final Intent intent) { } }); + private final ActivityResultLauncher permissionLauncher = registerForActivityResult(new ActivityResultContracts.RequestPermission(), result -> {}); @RequiresApi(api = Build.VERSION_CODES.M) @SuppressLint({"SetJavaScriptEnabled", "ClickableViewAccessibility", "RestrictedApi"}) @@ -253,6 +254,16 @@ protected void onCreate(final Bundle savedInstanceState) { requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, MY_PERMISSIONS_WRITE_EXTERNAL_STORAGE); } + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + if (shouldShowRequestPermissionRationale(Manifest.permission.POST_NOTIFICATIONS)) { + Snackbar.make(binding.getRoot(), R.string.grant_notification_permission, Snackbar.LENGTH_INDEFINITE) + .setAction(R.string.ok, view -> permissionLauncher.launch(Manifest.permission.POST_NOTIFICATIONS)) + .show(); + } else if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.POST_NOTIFICATIONS) != PackageManager.PERMISSION_GRANTED) { + permissionLauncher.launch(Manifest.permission.POST_NOTIFICATIONS); + } + } + binding.pullToRefresh.setOnRefreshListener(() -> { binding.noConnectionScreen.setVisibility(View.GONE); refreshWebsite(true); diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 38fd8bb9..a55090fe 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -35,6 +35,7 @@ reset copy retry + OK About @@ -62,6 +63,9 @@ Some media files might contain location data that are stripped by default. Grant permission to include full metadata The app has full file access currently + + Please grant the notification permission to receive updates on file transfers + Theme System Default