我正在为我的手机制作一个启动器,需要按字母顺序对应用程序进行排序。
Appslist = ArrayList<AppInfo>()
val i = Intent(Intent.ACTION_MAIN, null)
i.addCategory(Intent.CATEGORY_LAUNCHER)
val allApps = this.packageManager.queryIntentActivities(i, 0)
for (ri in allApps) {
val app = AppInfo()
app.label = ri.loadLabel(this.packageManager)
app.packageName = ri.activityInfo.packageName
app.icon = ri.activityInfo.loadIcon(this.packageManager)
if(app.label?.toString()!!.length >= searchWord.length && app.label?.toString()!!.substring(0, searchWord.length) == searchWord.toUpperCase() && searchWord != "" ||
app.label?.toString()!!.length >= searchWord.length && app.label?.toString()!!.substring(0, searchWord.length) == searchWord.toLowerCase() && searchWord != "" ||
app.label?.toString()!!.length >= searchWord.length && app.label?.toString()!!.substring(0, searchWord.length) == searchWord.capitalize() && searchWord != "" ||
app.label?.toString()!!.length >= searchWord.length && app.label?.toString()!!.substring(0, searchWord.length) == searchWord && searchWord != ""){
if(app.packageName != "com.david.launcher" ){
Appslist.add(app)
}
}
if(searchWord == ""){
if(app.packageName != "com.david.launcher"){
Appslist.add(app)
}
}
}
这是我的列表类型(我不太确定它是否被称为列表类型,但我希望你能理解):
public class AppInfo {
internal var label: CharSequence? = null
internal var packageName: CharSequence? = null
internal var icon: Drawable? = null
internal var isInFav: Boolean? = false
Comparable
接口,因此没有自然顺序,您的方法会失败,并且它也不符合 Kotlin 的惯用法。 - Jayson Minard