mirror of
https://github.com/tachiyomiorg/tachiyomi.git
synced 2024-11-05 01:35:10 +01:00
Fixes to notifcation actions, such as starting a opening a chapter
This commit is contained in:
parent
cc5c9a4699
commit
1b545c9e4d
@ -170,7 +170,8 @@ internal class DownloadNotifier(private val context: Context) {
|
||||
setSmallIcon(android.R.drawable.stat_sys_download_done)
|
||||
setAutoCancel(true)
|
||||
clearActions()
|
||||
setContentIntent(NotificationReceiver.openChapterPendingBroadcast(context, download.manga, download.chapter))
|
||||
setContentIntent(NotificationReceiver.openChapterPendingBroadcast(context, download
|
||||
.manga, download.chapter, Notifications.ID_DOWNLOAD_CHAPTER))
|
||||
setProgress(0, 0, false)
|
||||
}
|
||||
|
||||
|
@ -480,7 +480,8 @@ class LibraryUpdateService(
|
||||
val chapter = chapters.sortedByDescending { it.source_order }.find { !it.read }
|
||||
if (chapter != null) {
|
||||
addAction(R.drawable.ic_in_library_24dp, getString(R.string.action_start_reading),
|
||||
NotificationReceiver.openChapterPendingBroadcast(context, onlyManga, chapter))
|
||||
NotificationReceiver.openChapterPendingBroadcast(context, onlyManga,
|
||||
chapter, Notifications.ID_NEW_CHAPTERS))
|
||||
}
|
||||
}
|
||||
priority = NotificationCompat.PRIORITY_HIGH
|
||||
|
@ -1,12 +1,17 @@
|
||||
package eu.kanade.tachiyomi.data.notification
|
||||
|
||||
import android.app.Activity
|
||||
import android.app.KeyguardManager
|
||||
import android.app.Notification
|
||||
import android.app.PendingIntent
|
||||
import android.content.BroadcastReceiver
|
||||
import android.content.ClipData
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
import android.os.Handler
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import eu.kanade.tachiyomi.R
|
||||
import eu.kanade.tachiyomi.data.database.DatabaseHelper
|
||||
import eu.kanade.tachiyomi.data.database.models.Chapter
|
||||
@ -82,6 +87,7 @@ class NotificationReceiver : BroadcastReceiver() {
|
||||
* @param notificationId id of notification
|
||||
*/
|
||||
private fun shareImage(context: Context, path: String, notificationId: Int) {
|
||||
val km = context.getSystemService(Activity.KEYGUARD_SERVICE) as KeyguardManager
|
||||
// Create intent
|
||||
val intent = Intent(Intent.ACTION_SEND).apply {
|
||||
val uri = File(path).getUriCompat(context)
|
||||
@ -91,12 +97,7 @@ class NotificationReceiver : BroadcastReceiver() {
|
||||
type = "image/*"
|
||||
}
|
||||
// Close Navigation Shade
|
||||
context.sendBroadcast(Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS))
|
||||
// Launch share activity
|
||||
val shareIntent = Intent.createChooser(intent, context.getString(R.string
|
||||
.action_share))
|
||||
shareIntent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_GRANT_READ_URI_PERMISSION
|
||||
context.startActivity(shareIntent)
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@ -262,12 +263,17 @@ class NotificationReceiver : BroadcastReceiver() {
|
||||
* @return [PendingIntent]
|
||||
*/
|
||||
internal fun shareImagePendingBroadcast(context: Context, path: String, notificationId: Int): PendingIntent {
|
||||
val intent = Intent(context, NotificationReceiver::class.java).apply {
|
||||
action = ACTION_SHARE_IMAGE
|
||||
putExtra(EXTRA_FILE_LOCATION, path)
|
||||
putExtra(EXTRA_NOTIFICATION_ID, notificationId)
|
||||
//val shareIntent = ShareStartingActivity.newIntent(context, path)
|
||||
val shareIntent = Intent(Intent.ACTION_SEND).apply {
|
||||
val uri = File(path).getUriCompat(context)
|
||||
putExtra(Intent.EXTRA_STREAM, uri)
|
||||
flags = Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_ACTIVITY_CLEAR_TOP
|
||||
clipData = ClipData.newRawUri(null, uri)
|
||||
type = "image/*"
|
||||
}
|
||||
return PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT)
|
||||
//val shareIntent2 = Intent.createChooser(shareIntent, context.getString(R.string.action_share))
|
||||
return PendingIntent.getActivity(context, 0, shareIntent, PendingIntent
|
||||
.FLAG_CANCEL_CURRENT)
|
||||
}
|
||||
|
||||
/**
|
||||
@ -294,13 +300,10 @@ class NotificationReceiver : BroadcastReceiver() {
|
||||
* @param manga manga of chapter
|
||||
* @param chapter chapter that needs to be opened
|
||||
*/
|
||||
internal fun openChapterPendingBroadcast(context: Context, manga: Manga, chapter: Chapter): PendingIntent {
|
||||
val intent = Intent(context, NotificationReceiver::class.java).apply {
|
||||
action = ACTION_OPEN_CHAPTER
|
||||
putExtra(EXTRA_MANGA_ID, manga.id)
|
||||
putExtra(EXTRA_CHAPTER_ID, chapter.id)
|
||||
}
|
||||
return PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT)
|
||||
internal fun openChapterPendingBroadcast(context: Context, manga: Manga, chapter:
|
||||
Chapter, notificationId: Int): PendingIntent {
|
||||
val newIntent = ReaderActivity.newIntent(context, manga, chapter, notificationId)
|
||||
return PendingIntent.getActivity(context, 0, newIntent, PendingIntent.FLAG_UPDATE_CURRENT)
|
||||
}
|
||||
|
||||
/**
|
||||
@ -316,4 +319,4 @@ class NotificationReceiver : BroadcastReceiver() {
|
||||
return PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -21,6 +21,7 @@ import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView
|
||||
import eu.kanade.tachiyomi.R
|
||||
import eu.kanade.tachiyomi.data.database.models.Chapter
|
||||
import eu.kanade.tachiyomi.data.database.models.Manga
|
||||
import eu.kanade.tachiyomi.data.notification.Notifications
|
||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
||||
import eu.kanade.tachiyomi.data.preference.getOrDefault
|
||||
import eu.kanade.tachiyomi.ui.base.activity.BaseRxActivity
|
||||
@ -119,10 +120,13 @@ class ReaderActivity : BaseRxActivity<ReaderPresenter>(),
|
||||
const val VERTICAL = 3
|
||||
const val WEBTOON = 4
|
||||
|
||||
fun newIntent(context: Context, manga: Manga, chapter: Chapter): Intent {
|
||||
fun newIntent(context: Context, manga: Manga, chapter: Chapter, notificationId:Int? =
|
||||
null):
|
||||
Intent {
|
||||
val intent = Intent(context, ReaderActivity::class.java)
|
||||
intent.putExtra("manga", manga.id)
|
||||
intent.putExtra("chapter", chapter.id)
|
||||
intent.putExtra("notificationId", notificationId)
|
||||
return intent
|
||||
}
|
||||
}
|
||||
@ -142,6 +146,10 @@ class ReaderActivity : BaseRxActivity<ReaderPresenter>(),
|
||||
if (presenter.needsInit()) {
|
||||
val manga = intent.extras!!.getLong("manga", -1)
|
||||
val chapter = intent.extras!!.getLong("chapter", -1)
|
||||
val notificationId = intent.extras!!.getInt("notificationId", -1)
|
||||
if (notificationId > 0) {
|
||||
applicationContext.notificationManager.cancel(notificationId)
|
||||
}
|
||||
|
||||
if (manga == -1L || chapter == -1L) {
|
||||
finish()
|
||||
|
@ -3,6 +3,7 @@ package eu.kanade.tachiyomi.ui.reader
|
||||
import android.content.Context
|
||||
import android.graphics.Bitmap
|
||||
import androidx.core.app.NotificationCompat
|
||||
import androidx.core.content.ContextCompat
|
||||
import com.bumptech.glide.load.engine.DiskCacheStrategy
|
||||
import eu.kanade.tachiyomi.R
|
||||
import eu.kanade.tachiyomi.data.glide.GlideApp
|
||||
@ -57,6 +58,7 @@ class SaveImageNotifier(private val context: Context) {
|
||||
setStyle(NotificationCompat.BigPictureStyle().bigPicture(image))
|
||||
setLargeIcon(image)
|
||||
setAutoCancel(true)
|
||||
color = ContextCompat.getColor(context, R.color.colorAccentLight)
|
||||
// Clear old actions if they exist
|
||||
if (!mActions.isEmpty())
|
||||
mActions.clear()
|
||||
|
@ -7,4 +7,5 @@
|
||||
<color name="cardBackground">@color/colorDarkPrimary</color>
|
||||
<color name="rippleColor">@color/md_white_1000_20</color>
|
||||
<color name="dialogBackground">@color/md_grey_800</color>
|
||||
<color name="colorAccent">#3399FF</color>
|
||||
</resources>
|
@ -9,6 +9,7 @@
|
||||
<color name="snackbarBackground">#323232</color>
|
||||
<color name="dialogBackground">@color/md_white_1000</color>
|
||||
<color name="rippleColor">@color/md_black_1000_12</color>
|
||||
<color name="colorAccent">@color/md_blue_A400</color>
|
||||
<!-- Dark Application Colors -->
|
||||
<color name="colorDarkPrimary">#212121</color>
|
||||
<color name="colorDarkPrimaryDark">#212121</color>
|
||||
|
Loading…
Reference in New Issue
Block a user