summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJack Yu <jackcwyu@google.com>2022-04-12 14:34:01 +0800
committerJack Yu <jackcwyu@google.com>2022-04-12 14:34:01 +0800
commitc3d1fd0cda9fbe98120ddf19df4e956b7f5bb49c (patch)
tree5b92d5b0bbf327120de3d7c6db0d5c166fe3ffee
parent81bea97398333116f1eca8cf74d62572a3a9d338 (diff)
downloadNfc-c3d1fd0cda9fbe98120ddf19df4e956b7f5bb49c.tar.gz
Add error handling for multiple users and profiles
Handle IllegalStateException when calling createContextAsUser. Bug: 218710638 Test: manual Change-Id: I2bb5c2146c6e825c75198d2f288425d65f12ae96
-rw-r--r--src/com/android/nfc/NfcService.java20
1 files changed, 16 insertions, 4 deletions
diff --git a/src/com/android/nfc/NfcService.java b/src/com/android/nfc/NfcService.java
index c983fe48..1d3a598a 100644
--- a/src/com/android/nfc/NfcService.java
+++ b/src/com/android/nfc/NfcService.java
@@ -685,8 +685,14 @@ public class NfcService implements DeviceHostListener {
for (UserHandle uh : luh) {
if (um.isQuietModeEnabled(uh)) continue;
- PackageManager pm = mContext.createContextAsUser(uh,
- /*flags=*/0).getPackageManager();
+ PackageManager pm;
+ try {
+ pm = mContext.createContextAsUser(uh, /*flags=*/0).getPackageManager();
+ } catch (IllegalStateException e) {
+ Log.d(TAG, "Fail to get PackageManager for user: " + uh);
+ continue;
+ }
+
List<PackageInfo> packagesNfcEvents = pm.getPackagesHoldingPermissions(
new String[] {android.Manifest.permission.NFC_TRANSACTION_EVENT},
PackageManager.GET_ACTIVITIES);
@@ -2982,8 +2988,14 @@ public class NfcService implements DeviceHostListener {
mContext.sendBroadcastAsUser(intent, userHandle);
}
}
- PackageManager pm = mContext.createContextAsUser(userHandle,
- /*flags=*/0).getPackageManager();
+ PackageManager pm;
+ try {
+ pm = mContext.createContextAsUser(userHandle, /*flags=*/0)
+ .getPackageManager();
+ } catch (IllegalStateException e) {
+ Log.d(TAG, "Fail to get PackageManager for user: " + userHandle);
+ continue;
+ }
for (String packageName :
mNfcPreferredPaymentChangedInstalledPackages.get(userId)) {
try {