Return false if can't find package info

Change-Id: Iaf667e0977f60abcbf3eb76c46c46f591c00123e
Fixes: 66981347
Test: robotests
diff --git a/src/com/android/settings/applications/UsageAccessDetails.java b/src/com/android/settings/applications/UsageAccessDetails.java
index 253ddfd..c10fb55 100644
--- a/src/com/android/settings/applications/UsageAccessDetails.java
+++ b/src/com/android/settings/applications/UsageAccessDetails.java
@@ -137,9 +137,13 @@
 
     @Override
     protected boolean refreshUi() {
-        if (mPackageInfo == null) {
+        retrieveAppEntry();
+        if (mAppEntry == null) {
             return false;
         }
+        if (mPackageInfo == null) {
+            return false; // onCreate must have failed, make sure to exit
+        }
         mUsageState = mUsageBridge.getUsageInfo(mPackageName,
                 mPackageInfo.applicationInfo.uid);
 
diff --git a/tests/robotests/src/com/android/settings/applications/UsageAccessDetailsTest.java b/tests/robotests/src/com/android/settings/applications/UsageAccessDetailsTest.java
index 07acb13..1a3aeb5 100644
--- a/tests/robotests/src/com/android/settings/applications/UsageAccessDetailsTest.java
+++ b/tests/robotests/src/com/android/settings/applications/UsageAccessDetailsTest.java
@@ -16,17 +16,20 @@
 
 package com.android.settings.applications;
 
+import static com.google.common.truth.Truth.assertThat;
 import static org.mockito.ArgumentMatchers.nullable;
 import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.verify;
 
 import android.content.Context;
-import android.os.RemoteException;
+import android.os.Bundle;
 
 import com.android.internal.logging.nano.MetricsProto;
-import com.android.settings.testutils.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
 import com.android.settings.testutils.FakeFeatureFactory;
+import com.android.settings.testutils.SettingsRobolectricTestRunner;
+import com.android.settingslib.applications.ApplicationsState;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -68,9 +71,12 @@
     }
 
     @Test
-    public void refreshUi_nullPackageInfo_shouldNotCrash() throws RemoteException {
-        mFragment.mPackageInfo = null;
-        mFragment.refreshUi();
-        // should not crash
+    public void refreshUi_hasNoAppEntry_shouldReturnFalse() {
+        mFragment.mState = mock(ApplicationsState.class);
+        mFragment.setArguments(new Bundle());
+
+        assertThat(mFragment.refreshUi()).isFalse();
+        assertThat(mFragment.mAppEntry).isNull();
+        assertThat(mFragment.mPackageInfo).isNull();
     }
 }