pull/2337/head
parent
4adc05efb1
commit
53da8a8907
@ -0,0 +1,63 @@ |
||||
package io.legado.app.api |
||||
|
||||
import android.content.Context |
||||
import android.content.Intent |
||||
import androidx.core.content.pm.ShortcutInfoCompat |
||||
import androidx.core.content.pm.ShortcutManagerCompat |
||||
import androidx.core.graphics.drawable.IconCompat |
||||
import io.legado.app.R |
||||
import io.legado.app.receiver.SharedReceiverActivity |
||||
import io.legado.app.ui.book.read.ReadBookActivity |
||||
import io.legado.app.ui.main.MainActivity |
||||
|
||||
object ShortCuts { |
||||
|
||||
private inline fun <reified T> buildIntent(context: Context): Intent { |
||||
val intent = Intent(context, T::class.java) |
||||
intent.action = Intent.ACTION_VIEW |
||||
return intent |
||||
} |
||||
|
||||
private fun buildBookShelfShortCutInfo(context: Context): ShortcutInfoCompat { |
||||
val bookShelfIntent = buildIntent<MainActivity>(context) |
||||
return ShortcutInfoCompat.Builder(context, "bookshelf") |
||||
.setShortLabel(context.getString(R.string.bookshelf)) |
||||
.setLongLabel(context.getString(R.string.bookshelf)) |
||||
.setIcon(IconCompat.createWithResource(context, R.drawable.icon_read_book)) |
||||
.setIntent(bookShelfIntent) |
||||
.build() |
||||
} |
||||
|
||||
private fun buildReadBookShortCutInfo(context: Context): ShortcutInfoCompat { |
||||
val bookShelfIntent = buildIntent<MainActivity>(context) |
||||
val readBookIntent = buildIntent<ReadBookActivity>(context) |
||||
return ShortcutInfoCompat.Builder(context, "lastRead") |
||||
.setShortLabel(context.getString(R.string.last_read)) |
||||
.setLongLabel(context.getString(R.string.last_read)) |
||||
.setIcon(IconCompat.createWithResource(context, R.drawable.icon_read_book)) |
||||
.setIntents(arrayOf(bookShelfIntent, readBookIntent)) |
||||
.build() |
||||
} |
||||
|
||||
private fun buildReadAloudShortCutInfo(context: Context): ShortcutInfoCompat { |
||||
val readAloudIntent = buildIntent<SharedReceiverActivity>(context) |
||||
readAloudIntent.putExtra("action", "readAloud") |
||||
return ShortcutInfoCompat.Builder(context, "readAloud") |
||||
.setShortLabel(context.getString(R.string.read_aloud)) |
||||
.setLongLabel(context.getString(R.string.read_aloud)) |
||||
.setIcon(IconCompat.createWithResource(context, R.drawable.icon_read_book)) |
||||
.setIntent(readAloudIntent) |
||||
.build() |
||||
} |
||||
|
||||
fun buildShortCuts(context: Context) { |
||||
ShortcutManagerCompat.setDynamicShortcuts( |
||||
context, listOf( |
||||
buildReadBookShortCutInfo(context), |
||||
buildReadAloudShortCutInfo(context), |
||||
buildBookShelfShortCutInfo(context) |
||||
) |
||||
) |
||||
} |
||||
|
||||
} |
@ -1,60 +0,0 @@ |
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<shortcuts xmlns:tools="http://schemas.android.com/tools" |
||||
xmlns:android="http://schemas.android.com/apk/res/android"> |
||||
<shortcut |
||||
android:shortcutId="bookRead" |
||||
android:enabled="true" |
||||
android:icon="@drawable/icon_read_book" |
||||
android:shortcutShortLabel="@string/last_read" |
||||
android:shortcutLongLabel="@string/last_read" |
||||
android:shortcutDisabledMessage="@string/last_read" |
||||
tools:ignore="UnusedAttribute"> |
||||
|
||||
<intent |
||||
android:action="android.intent.action.VIEW" |
||||
android:targetPackage="${applicationId}" |
||||
android:targetClass="io.legado.app.ui.main.MainActivity" /> |
||||
<intent |
||||
android:action="android.intent.action.VIEW" |
||||
android:targetPackage="${applicationId}" |
||||
android:targetClass="io.legado.app.ui.book.read.ReadBookActivity" /> |
||||
<categories android:name="android.shortcut.conversation" /> |
||||
</shortcut> |
||||
|
||||
<shortcut |
||||
android:shortcutId="readAloud" |
||||
android:enabled="true" |
||||
android:icon="@drawable/icon_read_book" |
||||
android:shortcutShortLabel="@string/read_aloud" |
||||
android:shortcutLongLabel="@string/read_aloud" |
||||
android:shortcutDisabledMessage="@string/read_aloud" |
||||
tools:ignore="UnusedAttribute"> |
||||
|
||||
<intent |
||||
android:action="android.intent.action.VIEW" |
||||
android:targetPackage="${applicationId}" |
||||
android:targetClass="io.legado.app.receiver.SharedReceiverActivity"> |
||||
<extra |
||||
android:name="action" |
||||
android:value="readAloud" /> |
||||
</intent> |
||||
<categories android:name="android.shortcut.conversation" /> |
||||
</shortcut> |
||||
|
||||
<shortcut |
||||
android:shortcutId="bookshelf" |
||||
android:enabled="true" |
||||
android:icon="@drawable/icon_read_book" |
||||
android:shortcutShortLabel="@string/bookshelf" |
||||
android:shortcutLongLabel="@string/bookshelf" |
||||
android:shortcutDisabledMessage="@string/bookshelf" |
||||
tools:ignore="UnusedAttribute"> |
||||
|
||||
<intent |
||||
android:action="android.intent.action.VIEW" |
||||
android:targetPackage="${applicationId}" |
||||
android:targetClass="io.legado.app.ui.main.MainActivity" /> |
||||
<categories android:name="android.shortcut.conversation" /> |
||||
</shortcut> |
||||
|
||||
</shortcuts> |
Loading…
Reference in new issue