Fix NNFE when starting PersistentDataBlock

If the PersistentDataBlockService doesn't have a package configured to
use the block (R.string.config_persistentDataPackageName == "") then we
are currently getting this error:

Started executing PersistentDataBlockService.onStart
 not able to find package
 android.content.pm.PackageManager$NameNotFoundException:
 	at ApplicationPackageManager.getPackageUidAsUser
 	at PersistentDataBlockService.getAllowedUid
 	at PersistentDataBlockService.lambda$onStart

On devices which do not use FRP, this field is blank so we should not
log this message every time.

Test: adb logcat -b all | grep PersistentDataBlockService.lambda
Bug: 168244899
Change-Id: I738f20ad62e5e380181111179efea91cd915faf9
This commit is contained in:
Robin Lee
2021-01-29 11:01:26 +01:00
parent 6c0b3e82ab
commit adcd346d01

View File

@@ -30,6 +30,7 @@ import android.os.UserHandle;
import android.os.UserManager;
import android.service.persistentdata.IPersistentDataBlockService;
import android.service.persistentdata.PersistentDataBlockManager;
import android.text.TextUtils;
import android.util.Slog;
import com.android.internal.R;
@@ -147,14 +148,15 @@ public class PersistentDataBlockService extends SystemService {
private int getAllowedUid(int userHandle) {
String allowedPackage = mContext.getResources()
.getString(R.string.config_persistentDataPackageName);
PackageManager pm = mContext.getPackageManager();
int allowedUid = -1;
try {
allowedUid = pm.getPackageUidAsUser(allowedPackage,
PackageManager.MATCH_SYSTEM_ONLY, userHandle);
} catch (PackageManager.NameNotFoundException e) {
// not expected
Slog.e(TAG, "not able to find package " + allowedPackage, e);
if (!TextUtils.isEmpty(allowedPackage)) {
try {
allowedUid = mContext.getPackageManager().getPackageUidAsUser(
allowedPackage, PackageManager.MATCH_SYSTEM_ONLY, userHandle);
} catch (PackageManager.NameNotFoundException e) {
// not expected
Slog.e(TAG, "not able to find package " + allowedPackage, e);
}
}
return allowedUid;
}