mirror of
https://github.com/emanuele-f/PCAPdroid.git
synced 2026-07-03 21:21:12 +08:00
Catch possible crash in getUserBadgedIcon
Happening on Google Pixel 4 XL, Android 8.1.0
This commit is contained in:
parent
0351e7b9ac
commit
308de20cc7
@ -29,6 +29,7 @@ import android.os.UserHandle;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.emanuelef.remote_capture.CaptureService;
|
||||
import com.emanuelef.remote_capture.Log;
|
||||
import com.emanuelef.remote_capture.interfaces.DrawableLoader;
|
||||
|
||||
import java.io.Serializable;
|
||||
@ -41,6 +42,8 @@ public class AppDescriptor implements Comparable<AppDescriptor>, Serializable {
|
||||
private Drawable mIcon;
|
||||
private final DrawableLoader mIconLoader;
|
||||
private String mDescription;
|
||||
private static final String TAG = "AppDescriptor";
|
||||
private static boolean badgedIconFails = false;
|
||||
|
||||
// NULL for virtual apps
|
||||
PackageManager mPm;
|
||||
@ -97,8 +100,18 @@ public class AppDescriptor implements Comparable<AppDescriptor>, Serializable {
|
||||
// the badge is added below via getUserHandleForUid
|
||||
mIcon = mPackageInfo.applicationInfo.loadUnbadgedIcon(mPm);
|
||||
|
||||
UserHandle handle = UserHandle.getUserHandleForUid(mUid);
|
||||
mIcon = mPm.getUserBadgedIcon(mIcon, handle);
|
||||
if (!badgedIconFails) {
|
||||
try {
|
||||
UserHandle handle = UserHandle.getUserHandleForUid(mUid);
|
||||
|
||||
// On some systems may throw "java.lang.SecurityException: You need MANAGE_USERS permission to:
|
||||
// check if specified user a managed profile outside your profile group"
|
||||
mIcon = mPm.getUserBadgedIcon(mIcon, handle);
|
||||
} catch (SecurityException e) {
|
||||
Log.w(TAG, "getUserBadgedIcon failed, using icons without badges: " + e.getMessage());
|
||||
badgedIconFails = true;
|
||||
}
|
||||
}
|
||||
} else
|
||||
mIcon = mPackageInfo.applicationInfo.loadIcon(mPm);
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user