From 203e6f179b39bc83f3af8c363122d225fa98d125 Mon Sep 17 00:00:00 2001 From: Arne Schwabe Date: Thu, 25 Aug 2022 18:01:04 +0200 Subject: Fix notifcation request not going away after granted. --- .../main/java/de/blinkt/openvpn/core/VpnStatus.java | 1 - .../de/blinkt/openvpn/fragments/VPNProfileList.java | 18 +++++++++++------- 2 files changed, 11 insertions(+), 8 deletions(-) (limited to 'main') diff --git a/main/src/main/java/de/blinkt/openvpn/core/VpnStatus.java b/main/src/main/java/de/blinkt/openvpn/core/VpnStatus.java index 8130faef..63e4547d 100644 --- a/main/src/main/java/de/blinkt/openvpn/core/VpnStatus.java +++ b/main/src/main/java/de/blinkt/openvpn/core/VpnStatus.java @@ -14,7 +14,6 @@ import android.os.Message; import java.io.File; import java.io.PrintWriter; import java.io.StringWriter; -import java.util.Iterator; import java.util.LinkedList; import java.util.ListIterator; import java.util.Locale; diff --git a/main/src/ui/java/de/blinkt/openvpn/fragments/VPNProfileList.java b/main/src/ui/java/de/blinkt/openvpn/fragments/VPNProfileList.java index e833e81f..8c84a913 100644 --- a/main/src/ui/java/de/blinkt/openvpn/fragments/VPNProfileList.java +++ b/main/src/ui/java/de/blinkt/openvpn/fragments/VPNProfileList.java @@ -22,6 +22,8 @@ import android.os.Build; import android.os.Bundle; import android.os.PersistableBundle; +import androidx.activity.result.ActivityResultCallback; +import androidx.activity.result.ActivityResultLauncher; import androidx.activity.result.contract.ActivityResultContracts; import androidx.annotation.NonNull; import androidx.annotation.RequiresApi; @@ -79,7 +81,6 @@ public class VPNProfileList extends ListFragment implements OnClickListener, Vpn private static final int SELECT_PROFILE = 43; private static final int IMPORT_PROFILE = 231; private static final int FILE_PICKER_RESULT_KITKAT = 392; - private static final int RESULT_PERMISSION = 395; private static final int MENU_IMPORT_PROFILE = Menu.FIRST + 1; private static final int MENU_CHANGE_SORTING = Menu.FIRST + 2; private static final int MENU_IMPORT_AS = Menu.FIRST + 3; @@ -90,6 +91,7 @@ public class VPNProfileList extends ListFragment implements OnClickListener, Vpn private Intent mLastIntent; private VpnProfile defaultVPN; private View mPermissionView; + private ActivityResultLauncher mPermReceiver; @Override public void updateState(String state, String logmessage, final int localizedResId, ConnectionStatus level, Intent intent) { @@ -135,6 +137,13 @@ public class VPNProfileList extends ListFragment implements OnClickListener, Vpn super.onCreate(savedInstanceState); setHasOptionsMenu(true); setListAdapter(); + + registerPermissionReceiver(); + } + + private void registerPermissionReceiver() { + mPermReceiver = registerForActivityResult(new ActivityResultContracts.RequestPermission(), + result -> checkForNotificationPermission(requireView())); } @RequiresApi(api = Build.VERSION_CODES.N_MR1) @@ -297,7 +306,7 @@ public class VPNProfileList extends ListFragment implements OnClickListener, Vpn mPermissionView.setVisibility(permissionGranted ? View.GONE : View.VISIBLE); mPermissionView.setOnClickListener((view) -> { - requireActivity().requestPermissions(new String[]{Manifest.permission.POST_NOTIFICATIONS}, RESULT_PERMISSION); + mPermReceiver.launch(Manifest.permission.POST_NOTIFICATIONS); }); } @@ -502,16 +511,11 @@ public class VPNProfileList extends ListFragment implements OnClickListener, Vpn VpnProfile profile = ProfileManager.get(getActivity(), profileUUID); if (profile != null) onAddOrDuplicateProfile(profile); - } else if (resultCode == RESULT_PERMISSION) { - checkForNotificationPermission(requireView()); } - - if (resultCode != Activity.RESULT_OK) return; - if (requestCode == START_VPN_CONFIG) { String configuredVPN = data.getStringExtra(VpnProfile.EXTRA_PROFILEUUID); -- cgit v1.2.3