Android快捷方式自动删除

brc7rcf0  于 2022-12-09  发布在  Android
关注(0)|答案(1)|浏览(171)

我有一个应用程序,我可以按住,然后创建一个快捷方式的特定甲板/文件夹,但当我删除文件夹从应用程序本身,该图标(快捷方式)停留在那里,导致崩溃时,磁带上。我把检查NPE,所以现在它没有崩溃,但我想知道,如果我们可以删除文件夹删除本身的快捷方式。有一种方法在Android Studio(Kotlin)。下面是创建该快捷方式的代码

fun createIcon(context: Context, did: DeckId) {
        // This code should not be reachable with lower versions
        val shortcut = ShortcutInfoCompat.Builder(this, did.toString())
            .setIntent(
                Intent(context, Reviewer::class.java)
                    .setAction(Intent.ACTION_VIEW)
                    .putExtra("deckId", did)
            )
            .setIcon(IconCompat.createWithResource(context, R.mipmap.ic_launcher))
            .setShortLabel(Decks.basename(col.decks.name(did)))
            .setLongLabel(col.decks.name(did))
            .build()
        try {
            val success = ShortcutManagerCompat.requestPinShortcut(this, shortcut, null)

            // User report: "success" is true even if Vivo does not have permission
            if (AdaptionUtil.isVivo) {
                showThemedToast(this, getString(R.string.create_shortcut_error_vivo), false)
            }
            if (!success) {
                showThemedToast(this, getString(R.string.create_shortcut_failed), false)
            }
        } catch (e: Exception) {
            Timber.w(e)
            showThemedToast(this, getString(R.string.create_shortcut_error, e.localizedMessage), false)
        }
    }
jqjz2hbq

jqjz2hbq1#

/** Disables the shortcut of the deck whose id is [did] */
fun disableDeckShortcut(did: DeckId) {
    val childDids = col.decks.childDids(did, col.decks.childMap()).map { it.toString() }
    val deckTreeDids = listOf(did.toString(), *childDids.toTypedArray())
    val errorMessage: CharSequence = getString(R.string.deck_shortcut_doesnt_exist)
    ShortcutManagerCompat.disableShortcuts(this, deckTreeDids, errorMessage)
}

以上是我如何解决这个问题,如果有人想详细阅读相同的内容,这里是link

相关问题