Android 判断手机桌面是否已经存在App的快捷方式

发布于:2024-06-23 ⋅ 阅读:(70) ⋅ 点赞:(0)

我们需要在桌面添加快捷方式的时候,为了优化体验,有时候需要判断桌面上是否已经存在快捷方式。

经过自己探索整理,代码如下:

    /**
     * 判断桌面是否已添加快捷方式
     */
    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" />

网站公告

今日签到

点亮在社区的每一天
去签到