Merge "[MediaProjection] Avoid SysUI crash by handling NameNotFoundException" into udc-dev
This commit is contained in:
@@ -20,6 +20,7 @@ import android.annotation.UserIdInt
|
|||||||
import android.content.ComponentName
|
import android.content.ComponentName
|
||||||
import android.content.pm.PackageManager
|
import android.content.pm.PackageManager
|
||||||
import android.os.UserHandle
|
import android.os.UserHandle
|
||||||
|
import android.util.Log
|
||||||
import com.android.systemui.dagger.qualifiers.Background
|
import com.android.systemui.dagger.qualifiers.Background
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
import kotlinx.coroutines.CoroutineDispatcher
|
import kotlinx.coroutines.CoroutineDispatcher
|
||||||
@@ -36,18 +37,27 @@ constructor(
|
|||||||
private val packageManager: PackageManager
|
private val packageManager: PackageManager
|
||||||
) : RecentTaskLabelLoader {
|
) : RecentTaskLabelLoader {
|
||||||
|
|
||||||
|
private val TAG = "RecentTaskLabelLoader"
|
||||||
|
|
||||||
override suspend fun loadLabel(
|
override suspend fun loadLabel(
|
||||||
@UserIdInt userId: Int,
|
@UserIdInt userId: Int,
|
||||||
componentName: ComponentName
|
componentName: ComponentName
|
||||||
): CharSequence? =
|
): CharSequence? =
|
||||||
withContext(coroutineDispatcher) {
|
withContext(coroutineDispatcher) {
|
||||||
val userHandle = UserHandle(userId)
|
var badgedLabel: CharSequence? = null
|
||||||
|
try {
|
||||||
val appInfo =
|
val appInfo =
|
||||||
packageManager.getApplicationInfo(
|
packageManager.getApplicationInfoAsUser(
|
||||||
componentName.packageName,
|
componentName.packageName,
|
||||||
PackageManager.ApplicationInfoFlags.of(0 /* no flags */)
|
PackageManager.ApplicationInfoFlags.of(0 /* no flags */),
|
||||||
|
userId
|
||||||
)
|
)
|
||||||
val label = packageManager.getApplicationLabel(appInfo)
|
val label = packageManager.getApplicationLabel(appInfo)
|
||||||
return@withContext packageManager.getUserBadgedLabel(label, userHandle)
|
val userHandle = UserHandle(userId)
|
||||||
|
badgedLabel = packageManager.getUserBadgedLabel(label, userHandle)
|
||||||
|
} catch (e: PackageManager.NameNotFoundException) {
|
||||||
|
Log.e(TAG, "Unable to get application info", e)
|
||||||
|
}
|
||||||
|
return@withContext badgedLabel
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ constructor(
|
|||||||
}
|
}
|
||||||
launch {
|
launch {
|
||||||
val label = labelLoader.loadLabel(task.userId, component)
|
val label = labelLoader.loadLabel(task.userId, component)
|
||||||
root.contentDescription = label
|
root.contentDescription = label ?: root.context.getString(R.string.unknown)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
launch {
|
launch {
|
||||||
|
|||||||
Reference in New Issue
Block a user