Код: Выделить всё
< /code>
Основной класс активности заключается в следующем < /p>
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
TestOrbitterApplicationTheme {
AppListScreen()
}
}
}
private fun getInstalledApps(): List {
val pm = packageManager
val apps = mutableListOf()
val packages = pm.getInstalledApplications(PackageManager.GET_META_DATA)
for (app in packages) {
val label = pm.getApplicationLabel(app).toString()
val icon = pm.getApplicationIcon(app)
val packageName = app.packageName
// Exclude system apps (optional)
if (pm.getLaunchIntentForPackage(packageName) != null) {
apps.add(AppInfo(label, icon, packageName))
}
}
return apps
}
@Composable
fun AppListScreen() {
val apps = remember { getInstalledApps() }
LazyColumn(modifier = Modifier.fillMaxSize()) {
items(apps) { app ->
AppItem(app)
}
}
}
@Composable
fun AppItem(app: AppInfo) {
Row(
modifier = Modifier
.fillMaxWidth()
.padding(10.dp)
.clickable {
launchApp(app.packageName)
},
horizontalArrangement = Arrangement.Start
) {
Image(
bitmap = app.icon.toBitmap().asImageBitmap(),
contentDescription = app.name,
modifier = Modifier.size(48.dp)
)
Spacer(modifier = Modifier.width(10.dp))
Text(text = app.name, style = MaterialTheme.typography.bodyLarge)
}
}
private fun launchApp(packageName: String) {
val intent = packageManager.getLaunchIntentForPackage(packageName)
if (intent != null) {
startActivity(intent)
} else {
Log.e("Launcher", "App not found: $packageName")
}
}
}
data class AppInfo(val name: String, val icon: Drawable, val packageName: String)
fun Drawable.toBitmap(): Bitmap {
if (intrinsicWidth
< /blockquote>
Подробнее здесь: [url]https://stackoverflow.com/questions/79471782/meta-quest-2-custom-launcher-not-recognized-as-default-home-app-android-2d-app[/url]