Fix NPE crash in UsageAccessDetails
mPackageInfo will be null in RefreshUI method in UsageAccessDetails.java Bug:https://issuetracker.google.com/issues/65872768 Test:As explained in the link above Change-Id: I8bd4b822cfe5d8a3347ca7f5886605cbdfb9b8b6 Signed-off-by: tiansiming <tiansiming@xiaomi.com>
This commit is contained in:
@@ -214,7 +214,9 @@ public abstract class AppInfoBase extends SettingsPreferenceFragment
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPackageListChanged() {
|
public void onPackageListChanged() {
|
||||||
refreshUi();
|
if (!refreshUi()) {
|
||||||
|
setIntentAndFinish(true, true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void startAppInfoFragment(Class<?> fragment, int titleRes,
|
public static void startAppInfoFragment(Class<?> fragment, int titleRes,
|
||||||
|
@@ -137,6 +137,9 @@ public class UsageAccessDetails extends AppInfoWithHeader implements OnPreferenc
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected boolean refreshUi() {
|
protected boolean refreshUi() {
|
||||||
|
if (mPackageInfo == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
mUsageState = mUsageBridge.getUsageInfo(mPackageName,
|
mUsageState = mUsageBridge.getUsageInfo(mPackageName,
|
||||||
mPackageInfo.applicationInfo.uid);
|
mPackageInfo.applicationInfo.uid);
|
||||||
|
|
||||||
|
@@ -17,6 +17,7 @@
|
|||||||
package com.android.settings.applications;
|
package com.android.settings.applications;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.os.RemoteException;
|
||||||
|
|
||||||
import com.android.internal.logging.nano.MetricsProto;
|
import com.android.internal.logging.nano.MetricsProto;
|
||||||
import com.android.settings.SettingsRobolectricTestRunner;
|
import com.android.settings.SettingsRobolectricTestRunner;
|
||||||
@@ -65,4 +66,11 @@ public class UsageAccessDetailsTest {
|
|||||||
verify(mFeatureFactory.metricsFeatureProvider).action(any(Context.class),
|
verify(mFeatureFactory.metricsFeatureProvider).action(any(Context.class),
|
||||||
eq(MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_USAGE_VIEW_DENY), eq("app"));
|
eq(MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_USAGE_VIEW_DENY), eq("app"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void refreshUi_nullPackageInfo_shouldNotCrash() throws RemoteException {
|
||||||
|
mFragment.mPackageInfo = null;
|
||||||
|
mFragment.refreshUi();
|
||||||
|
// should not crash
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user