我们需要在桌面添加快捷方式的时候,为了优化体验,有时候需要判断桌面上是否已经存在快捷方式。
经过自己探索整理,代码如下:
/**
* 判断桌面是否已添加快捷方式
*/
fun hasShortcut(context: Context): Boolean {
try {
var result = false
val pm = context.packageManager
val title = pm.getApplicationLabel(pm.getApplicationInfo(context.packageName, PackageManager.GET_META_DATA)).toString()
val intent = Intent(Intent.ACTION_MAIN)
intent.addCategory(Intent.CATEGORY_HOME)
val resolveInfo = context.packageManager.resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY)
val launcherPackageName = resolveInfo?.activityInfo?.packageName
if (launcherPackageName.isNullOrEmpty()) {
return false
}
val uriStr = "content://${launcherPackageName}.settings/favorites?notify=true"
val PROJECTION = arrayOf("title", "intent")
val CONTENT_URI = Uri.parse(uriStr)
val c = context.contentResolver.query(
CONTENT_URI, PROJECTION, "title=?", arrayOf(title), null
)
if (c != null && c.count > 0) {
c.close()
result = true
}
return false
} catch (e: java.lang.Exception) {
}
return false
}
权限
<uses-permission android:name="com.google.android.apps.nexuslauncher.permission.READ_SETTINGS"/>
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="com.android.launcher2.permission.READ_SETTINGS" />
<uses-permission android:name="com.android.launcher3.permission.READ_SETTINGS" />
<uses-permission android:name="com.samsung.android.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="com.samsung.android.launcher.permission.WRITE_SETTINGS" />
<uses-permission android:name="org.adw.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="com.htc.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="com.qihoo360.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="com.lge.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="net.qihoo.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="org.adwfreak.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="org.adw.launcher_donut.permission.READ_SETTINGS" />
<uses-permission android:name="com.huawei.launcher3.permission.READ_SETTINGS" />
<uses-permission android:name="com.fede.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="com.sec.android.app.twlauncher.settings.READ_SETTINGS" />
<uses-permission android:name="com.anddoes.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="com.tencent.qqlauncher.permission.READ_SETTINGS" />
<uses-permission android:name="com.huawei.launcher2.permission.READ_SETTINGS" />
<uses-permission android:name="com.android.mylauncher.permission.READ_SETTINGS" />
<uses-permission android:name="com.ebproductions.android.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="com.oppo.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="com.lenovo.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="com.huawei.android.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="com.bbk.launcher2.permission.READ_SETTINGS" />
<uses-permission android:name="cn.nubia.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="cn.nubia.launcher.permission.WRITE_SETTINGS" />
<uses-permission android:name="cn.nubia.launcher2.permission.READ_SETTINGS" />
<uses-permission android:name="cn.nubia.launcher2.permission.WRITE_SETTINGS" />
<uses-permission android:name="net.oneplus.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="net.oneplus.launcher.permission.WRITE_SETTINGS" />