From d5e10c222c28086fd29ac0683032f60516dcf34a Mon Sep 17 00:00:00 2001 From: James Brown Date: Sat, 30 Nov 2024 21:56:13 +0800 Subject: [PATCH] Update receivers to API34 --- .../app/entity/FinishReceiver.java | 26 +++++++++++++++--- .../alphawallet/app/entity/HomeReceiver.java | 27 ++++++++++++++++--- .../com/alphawallet/app/ui/HomeActivity.java | 4 +-- .../app/ui/WalletConnectSessionActivity.java | 23 ++++++++++++---- 4 files changed, 65 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/com/alphawallet/app/entity/FinishReceiver.java b/app/src/main/java/com/alphawallet/app/entity/FinishReceiver.java index 08b36dca49..9736f4df5b 100644 --- a/app/src/main/java/com/alphawallet/app/entity/FinishReceiver.java +++ b/app/src/main/java/com/alphawallet/app/entity/FinishReceiver.java @@ -1,10 +1,14 @@ package com.alphawallet.app.entity; +import static androidx.core.content.ContextCompat.RECEIVER_NOT_EXPORTED; +import static androidx.core.content.ContextCompat.registerReceiver; + import android.app.Activity; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; +import android.os.Build; import androidx.localbroadcastmanager.content.LocalBroadcastManager; @@ -19,12 +23,19 @@ public FinishReceiver(Activity ctx) { activity = ctx; broadcastManager = LocalBroadcastManager.getInstance(ctx); - register(); + register(ctx); } - private void register() + private void register(Activity ctx) { - broadcastManager.registerReceiver(this, new IntentFilter(C.PRUNE_ACTIVITY)); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) + { + registerReceiver(ctx, this, new IntentFilter(C.WALLET_CONNECT_COUNT_CHANGE), RECEIVER_NOT_EXPORTED); + } + else + { + broadcastManager.registerReceiver(this, new IntentFilter(C.PRUNE_ACTIVITY)); + } } @Override @@ -35,6 +46,13 @@ public void onReceive(Context context, Intent intent) public void unregister() { - broadcastManager.unregisterReceiver(this); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) + { + activity.unregisterReceiver(this); + } + else + { + broadcastManager.unregisterReceiver(this); + } } } diff --git a/app/src/main/java/com/alphawallet/app/entity/HomeReceiver.java b/app/src/main/java/com/alphawallet/app/entity/HomeReceiver.java index a5f9c74b32..136172bb2c 100644 --- a/app/src/main/java/com/alphawallet/app/entity/HomeReceiver.java +++ b/app/src/main/java/com/alphawallet/app/entity/HomeReceiver.java @@ -1,11 +1,15 @@ package com.alphawallet.app.entity; +import static androidx.core.content.ContextCompat.registerReceiver; + import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; +import android.os.Build; import android.os.Bundle; +import androidx.core.content.ContextCompat; import androidx.localbroadcastmanager.content.LocalBroadcastManager; import com.alphawallet.app.C; @@ -42,17 +46,32 @@ public void onReceive(Context context, Intent intent) } } - public void register() + public void register(Context ctx) { IntentFilter filter = new IntentFilter(); filter.addAction(C.REQUEST_NOTIFICATION_ACCESS); filter.addAction(C.BACKUP_WALLET_SUCCESS); filter.addAction(C.WALLET_CONNECT_REQUEST); - broadcastManager.registerReceiver(this, filter); + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) + { + registerReceiver(ctx, this, new IntentFilter(C.WALLET_CONNECT_COUNT_CHANGE), ContextCompat.RECEIVER_NOT_EXPORTED); + } + else + { + broadcastManager.registerReceiver(this, filter); + } } - public void unregister() + public void unregister(Context ctx) { - broadcastManager.unregisterReceiver(this); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) + { + ctx.unregisterReceiver(this); + } + else + { + broadcastManager.unregisterReceiver(this); + } } } diff --git a/app/src/main/java/com/alphawallet/app/ui/HomeActivity.java b/app/src/main/java/com/alphawallet/app/ui/HomeActivity.java index 57d365aa22..f2f7a65d76 100644 --- a/app/src/main/java/com/alphawallet/app/ui/HomeActivity.java +++ b/app/src/main/java/com/alphawallet/app/ui/HomeActivity.java @@ -582,7 +582,7 @@ protected void onResume() if (homeReceiver == null) { homeReceiver = new HomeReceiver(this, this); - homeReceiver.register(); + homeReceiver.register(this); } initViews(); } @@ -669,7 +669,7 @@ public void onDestroy() viewModel.onClean(); if (homeReceiver != null) { - homeReceiver.unregister(); + homeReceiver.unregister(this); homeReceiver = null; } } diff --git a/app/src/main/java/com/alphawallet/app/ui/WalletConnectSessionActivity.java b/app/src/main/java/com/alphawallet/app/ui/WalletConnectSessionActivity.java index 9c01cc8c95..9a2093157e 100644 --- a/app/src/main/java/com/alphawallet/app/ui/WalletConnectSessionActivity.java +++ b/app/src/main/java/com/alphawallet/app/ui/WalletConnectSessionActivity.java @@ -2,12 +2,11 @@ import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK; -import static androidx.core.content.ContentProviderCompat.requireContext; - import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; +import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.os.Looper; @@ -24,7 +23,6 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import androidx.appcompat.app.AlertDialog; import androidx.appcompat.widget.PopupMenu; import androidx.lifecycle.ViewModelProvider; import androidx.localbroadcastmanager.content.LocalBroadcastManager; @@ -60,6 +58,7 @@ public class WalletConnectSessionActivity extends BaseActivity { private final Handler handler = new Handler(Looper.getMainLooper()); private LocalBroadcastManager broadcastManager; + private WalletConnectViewModel viewModel; private RecyclerView recyclerView; private Button btnConnectWallet; @@ -246,12 +245,26 @@ public void onSessionDisconnected() private void startConnectionCheck() { - broadcastManager.registerReceiver(walletConnectChangeReceiver, new IntentFilter(C.WALLET_CONNECT_COUNT_CHANGE)); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) + { + registerReceiver(walletConnectChangeReceiver, new IntentFilter(C.WALLET_CONNECT_COUNT_CHANGE), RECEIVER_NOT_EXPORTED); + } + else + { + broadcastManager.registerReceiver(walletConnectChangeReceiver, new IntentFilter(C.WALLET_CONNECT_COUNT_CHANGE)); + } } private void stopConnectionCheck() { - broadcastManager.unregisterReceiver(walletConnectChangeReceiver); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) + { + unregisterReceiver(walletConnectChangeReceiver); + } + else + { + broadcastManager.unregisterReceiver(walletConnectChangeReceiver); + } } public class CustomAdapter extends RecyclerView.Adapter