mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-02-11 06:44:00 +00:00
Fixed possible crashes below U
This commit is contained in:
@@ -77,55 +77,69 @@ open class SystemApiWrapper(context: Context?) : ApiWrapper(context) {
|
|||||||
if (!enablePrivateSpace() || !LawnchairApp.isRecentsEnabled) {
|
if (!enablePrivateSpace() || !LawnchairApp.isRecentsEnabled) {
|
||||||
return super.queryAllUsers()
|
return super.queryAllUsers()
|
||||||
}
|
}
|
||||||
val users = ArrayMap<UserHandle, UserIconInfo>()
|
return try {
|
||||||
mContext.getSystemService(UserManager::class.java)!!.userProfiles?.forEach { user ->
|
val users = ArrayMap<UserHandle, UserIconInfo>()
|
||||||
mContext.getSystemService(LauncherApps::class.java)!!.getLauncherUserInfo(user)?.apply {
|
mContext.getSystemService(UserManager::class.java)!!.userProfiles?.forEach { user ->
|
||||||
users[user] =
|
mContext.getSystemService(LauncherApps::class.java)!!.getLauncherUserInfo(user)?.apply {
|
||||||
UserIconInfo(
|
users[user] =
|
||||||
user,
|
UserIconInfo(
|
||||||
when (userType) {
|
user,
|
||||||
UserManager.USER_TYPE_PROFILE_MANAGED -> UserIconInfo.TYPE_WORK
|
when (userType) {
|
||||||
UserManager.USER_TYPE_PROFILE_CLONE -> UserIconInfo.TYPE_CLONED
|
UserManager.USER_TYPE_PROFILE_MANAGED -> UserIconInfo.TYPE_WORK
|
||||||
UserManager.USER_TYPE_PROFILE_PRIVATE -> UserIconInfo.TYPE_PRIVATE
|
UserManager.USER_TYPE_PROFILE_CLONE -> UserIconInfo.TYPE_CLONED
|
||||||
else -> UserIconInfo.TYPE_MAIN
|
UserManager.USER_TYPE_PROFILE_PRIVATE -> UserIconInfo.TYPE_PRIVATE
|
||||||
},
|
else -> UserIconInfo.TYPE_MAIN
|
||||||
userSerialNumber.toLong()
|
},
|
||||||
)
|
userSerialNumber.toLong()
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
return users
|
||||||
|
} catch (t : Throwable) {
|
||||||
|
return super.queryAllUsers()
|
||||||
}
|
}
|
||||||
return users
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequiresApi(Build.VERSION_CODES.VANILLA_ICE_CREAM)
|
@RequiresApi(Build.VERSION_CODES.VANILLA_ICE_CREAM)
|
||||||
override fun getPreInstalledSystemPackages(user: UserHandle): List<String> =
|
override fun getPreInstalledSystemPackages(user: UserHandle): List<String> {
|
||||||
if (enablePrivateSpace() && privateSpaceSysAppsSeparation())
|
return try {
|
||||||
mContext
|
if (enablePrivateSpace() && privateSpaceSysAppsSeparation())
|
||||||
.getSystemService(LauncherApps::class.java)!!
|
mContext
|
||||||
.getPreInstalledSystemPackages(user)
|
.getSystemService(LauncherApps::class.java)!!
|
||||||
else ArrayList()
|
.getPreInstalledSystemPackages(user)
|
||||||
|
else ArrayList()
|
||||||
|
} catch (t: Throwable) {
|
||||||
|
super.getPreInstalledSystemPackages(user)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override fun getAppMarketActivityIntent(packageName: String, user: UserHandle): Intent =
|
override fun getAppMarketActivityIntent(packageName: String, user: UserHandle): Intent {
|
||||||
if (
|
return try {
|
||||||
enablePrivateSpace() &&
|
if (
|
||||||
(privateSpaceAppInstallerButton() || enablePrivateSpaceInstallShortcut())
|
enablePrivateSpace() &&
|
||||||
)
|
(privateSpaceAppInstallerButton() || enablePrivateSpaceInstallShortcut())
|
||||||
ProxyActivityStarter.getLaunchIntent(
|
|
||||||
mContext,
|
|
||||||
StartActivityParams(null as PendingIntent?, 0).apply {
|
|
||||||
intentSender =
|
|
||||||
mContext
|
|
||||||
.getSystemService(LauncherApps::class.java)!!
|
|
||||||
.getAppMarketActivityIntent(packageName, user)
|
|
||||||
options =
|
|
||||||
ActivityOptions.makeBasic()
|
|
||||||
.setPendingIntentBackgroundActivityStartMode(
|
|
||||||
ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_ALLOWED
|
|
||||||
)
|
|
||||||
.toBundle()
|
|
||||||
requireActivityResult = false
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
else super.getAppMarketActivityIntent(packageName, user)
|
ProxyActivityStarter.getLaunchIntent(
|
||||||
|
mContext,
|
||||||
|
StartActivityParams(null as PendingIntent?, 0).apply {
|
||||||
|
intentSender =
|
||||||
|
mContext
|
||||||
|
.getSystemService(LauncherApps::class.java)!!
|
||||||
|
.getAppMarketActivityIntent(packageName, user)
|
||||||
|
options =
|
||||||
|
ActivityOptions.makeBasic()
|
||||||
|
.setPendingIntentBackgroundActivityStartMode(
|
||||||
|
ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_ALLOWED
|
||||||
|
)
|
||||||
|
.toBundle()
|
||||||
|
requireActivityResult = false
|
||||||
|
}
|
||||||
|
)
|
||||||
|
else super.getAppMarketActivityIntent(packageName, user)
|
||||||
|
} catch (t: Throwable) {
|
||||||
|
super.getAppMarketActivityIntent(packageName, user)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/** Returns an intent which can be used to open Private Space Settings. */
|
/** Returns an intent which can be used to open Private Space Settings. */
|
||||||
override fun getPrivateSpaceSettingsIntent(): Intent? =
|
override fun getPrivateSpaceSettingsIntent(): Intent? =
|
||||||
|
|||||||
@@ -101,19 +101,23 @@ public class ApiWrapper implements ResourceBasedOverride, SafeCloseable {
|
|||||||
isWork ? UserIconInfo.TYPE_WORK : UserIconInfo.TYPE_MAIN,
|
isWork ? UserIconInfo.TYPE_WORK : UserIconInfo.TYPE_MAIN,
|
||||||
serial);
|
serial);
|
||||||
|
|
||||||
if (launcherApps != null && Utilities.ATLEAST_V) {
|
try {
|
||||||
LauncherUserInfo userInfo = launcherApps.getLauncherUserInfo(user);
|
if (Utilities.ATLEAST_U && launcherApps != null) {
|
||||||
if (userInfo != null) {
|
LauncherUserInfo userInfo = launcherApps.getLauncherUserInfo(user);
|
||||||
var userType = userInfo.getUserType();
|
if (userInfo != null) {
|
||||||
info = new UserIconInfo(
|
var userType = userInfo.getUserType();
|
||||||
user,
|
info = new UserIconInfo(
|
||||||
userType.equals (UserManager.USER_TYPE_PROFILE_MANAGED) ? UserIconInfo.TYPE_WORK :
|
user,
|
||||||
userType.equals (UserManager.USER_TYPE_PROFILE_CLONE) ? UserIconInfo.TYPE_CLONED :
|
userType.equals (UserManager.USER_TYPE_PROFILE_MANAGED) ? UserIconInfo.TYPE_WORK :
|
||||||
userType.equals (UserManager.USER_TYPE_PROFILE_PRIVATE) ? UserIconInfo.TYPE_PRIVATE :
|
userType.equals (UserManager.USER_TYPE_PROFILE_CLONE) ? UserIconInfo.TYPE_CLONED :
|
||||||
UserIconInfo.TYPE_MAIN,
|
userType.equals (UserManager.USER_TYPE_PROFILE_PRIVATE) ? UserIconInfo.TYPE_PRIVATE :
|
||||||
serial
|
UserIconInfo.TYPE_MAIN,
|
||||||
);
|
serial
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
} catch (Throwable t) {
|
||||||
|
// Ignore
|
||||||
}
|
}
|
||||||
|
|
||||||
users.put(user, info);
|
users.put(user, info);
|
||||||
|
|||||||
Reference in New Issue
Block a user