Mark DataUsageState as nullable to avoid potential NPE risk
mDataUsageState is nullable in UnrestrictedDataAccessPreference.java, so we'd better
add a annotation to getDataUsageState(), and add a null-check before calling it.
Bug: 246828843
Test: manual and Robotest.
Change-Id: If7fea53ec7efd004391a09becdba5709ae686f40
diff --git a/src/com/android/settings/datausage/UnrestrictedDataAccessPreference.java b/src/com/android/settings/datausage/UnrestrictedDataAccessPreference.java
index 08e523c..1fea84c 100644
--- a/src/com/android/settings/datausage/UnrestrictedDataAccessPreference.java
+++ b/src/com/android/settings/datausage/UnrestrictedDataAccessPreference.java
@@ -20,6 +20,7 @@
import android.os.UserHandle;
import android.view.View;
+import androidx.annotation.Nullable;
import androidx.preference.PreferenceViewHolder;
import com.android.settings.R;
@@ -152,6 +153,7 @@
}
}
+ @Nullable
public AppStateDataUsageBridge.DataUsageState getDataUsageState() {
return mDataUsageState;
}
diff --git a/src/com/android/settings/datausage/UnrestrictedDataAccessPreferenceController.java b/src/com/android/settings/datausage/UnrestrictedDataAccessPreferenceController.java
index 06cf8ed..438ed0d 100644
--- a/src/com/android/settings/datausage/UnrestrictedDataAccessPreferenceController.java
+++ b/src/com/android/settings/datausage/UnrestrictedDataAccessPreferenceController.java
@@ -194,7 +194,9 @@
logSpecialPermissionChange(allowlisted, accessPreference.getEntry().info.packageName);
mDataSaverBackend.setIsAllowlisted(accessPreference.getEntry().info.uid,
accessPreference.getEntry().info.packageName, allowlisted);
- accessPreference.getDataUsageState().isDataSaverAllowlisted = allowlisted;
+ if (accessPreference.getDataUsageState() != null) {
+ accessPreference.getDataUsageState().isDataSaverAllowlisted = allowlisted;
+ }
return true;
}
return false;