mirror of
https://github.com/kiwix/kiwix-android.git
synced 2025-09-13 09:26:52 -04:00
Added RECEIVER_NOT_EXPORTED to all broadcasts to make the application compatiable with Android 14. Also, Fixed the clicking is not working in notification
This commit is contained in:
parent
8405c7c6d7
commit
28472c0988
@ -19,6 +19,7 @@ package org.kiwix.kiwixmobile.localFileTransfer
|
|||||||
|
|
||||||
import android.content.BroadcastReceiver
|
import android.content.BroadcastReceiver
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import android.content.Context.RECEIVER_NOT_EXPORTED
|
||||||
import android.content.IntentFilter
|
import android.content.IntentFilter
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.net.wifi.WpsInfo
|
import android.net.wifi.WpsInfo
|
||||||
@ -32,10 +33,10 @@ import android.net.wifi.p2p.WifiP2pManager.Channel
|
|||||||
import android.net.wifi.p2p.WifiP2pManager.ChannelListener
|
import android.net.wifi.p2p.WifiP2pManager.ChannelListener
|
||||||
import android.net.wifi.p2p.WifiP2pManager.ConnectionInfoListener
|
import android.net.wifi.p2p.WifiP2pManager.ConnectionInfoListener
|
||||||
import android.net.wifi.p2p.WifiP2pManager.PeerListListener
|
import android.net.wifi.p2p.WifiP2pManager.PeerListListener
|
||||||
|
import android.os.Build
|
||||||
import android.os.Build.VERSION
|
import android.os.Build.VERSION
|
||||||
import android.os.Build.VERSION_CODES
|
import android.os.Build.VERSION_CODES
|
||||||
import android.os.Looper.getMainLooper
|
import android.os.Looper.getMainLooper
|
||||||
import org.kiwix.kiwixmobile.core.utils.files.Log
|
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
import androidx.lifecycle.LifecycleCoroutineScope
|
import androidx.lifecycle.LifecycleCoroutineScope
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
@ -44,6 +45,7 @@ import org.kiwix.kiwixmobile.core.extensions.toast
|
|||||||
import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil
|
import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil
|
||||||
import org.kiwix.kiwixmobile.core.utils.dialog.AlertDialogShower
|
import org.kiwix.kiwixmobile.core.utils.dialog.AlertDialogShower
|
||||||
import org.kiwix.kiwixmobile.core.utils.dialog.KiwixDialog.FileTransferConfirmation
|
import org.kiwix.kiwixmobile.core.utils.dialog.KiwixDialog.FileTransferConfirmation
|
||||||
|
import org.kiwix.kiwixmobile.core.utils.files.Log
|
||||||
import org.kiwix.kiwixmobile.localFileTransfer.FileItem.FileStatus
|
import org.kiwix.kiwixmobile.localFileTransfer.FileItem.FileStatus
|
||||||
import org.kiwix.kiwixmobile.localFileTransfer.KiwixWifiP2pBroadcastReceiver.P2pEventListener
|
import org.kiwix.kiwixmobile.localFileTransfer.KiwixWifiP2pBroadcastReceiver.P2pEventListener
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
@ -105,7 +107,11 @@ class WifiDirectManager @Inject constructor(
|
|||||||
addAction(WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION)
|
addAction(WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION)
|
||||||
addAction(WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION)
|
addAction(WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION)
|
||||||
}
|
}
|
||||||
context.registerReceiver(receiver, intentFilter)
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
||||||
|
context.registerReceiver(receiver, intentFilter, RECEIVER_NOT_EXPORTED)
|
||||||
|
} else {
|
||||||
|
context.registerReceiver(receiver, intentFilter)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun unregisterWifiDirectBroadcastReceiver() = context.unregisterReceiver(receiver)
|
private fun unregisterWifiDirectBroadcastReceiver() = context.unregisterReceiver(receiver)
|
||||||
|
@ -54,6 +54,7 @@ import org.kiwix.kiwixmobile.core.di.modules.NetworkModule
|
|||||||
import org.kiwix.kiwixmobile.core.di.modules.SearchModule
|
import org.kiwix.kiwixmobile.core.di.modules.SearchModule
|
||||||
import org.kiwix.kiwixmobile.core.downloader.Downloader
|
import org.kiwix.kiwixmobile.core.downloader.Downloader
|
||||||
import org.kiwix.kiwixmobile.core.downloader.downloadManager.DownloadManagerBroadcastReceiver
|
import org.kiwix.kiwixmobile.core.downloader.downloadManager.DownloadManagerBroadcastReceiver
|
||||||
|
import org.kiwix.kiwixmobile.core.downloader.downloadManager.DownloadNotificationActionsBroadcastReceiver
|
||||||
import org.kiwix.kiwixmobile.core.error.ErrorActivity
|
import org.kiwix.kiwixmobile.core.error.ErrorActivity
|
||||||
import org.kiwix.kiwixmobile.core.main.KiwixWebView
|
import org.kiwix.kiwixmobile.core.main.KiwixWebView
|
||||||
import org.kiwix.kiwixmobile.core.reader.ZimFileReader
|
import org.kiwix.kiwixmobile.core.reader.ZimFileReader
|
||||||
@ -120,6 +121,7 @@ interface CoreComponent {
|
|||||||
fun mutex(): Mutex
|
fun mutex(): Mutex
|
||||||
|
|
||||||
fun downloadManagerBroadCastReceiver(): DownloadManagerBroadcastReceiver
|
fun downloadManagerBroadCastReceiver(): DownloadManagerBroadcastReceiver
|
||||||
|
fun downloadNotificationActionBroadCastReceiver(): DownloadNotificationActionsBroadcastReceiver
|
||||||
|
|
||||||
fun inject(application: CoreApp)
|
fun inject(application: CoreApp)
|
||||||
fun inject(kiwixWebView: KiwixWebView)
|
fun inject(kiwixWebView: KiwixWebView)
|
||||||
|
@ -24,8 +24,6 @@ import android.content.Context
|
|||||||
import dagger.Module
|
import dagger.Module
|
||||||
import dagger.Provides
|
import dagger.Provides
|
||||||
import org.kiwix.kiwixmobile.core.di.CoreServiceScope
|
import org.kiwix.kiwixmobile.core.di.CoreServiceScope
|
||||||
import org.kiwix.kiwixmobile.core.downloader.downloadManager.DownloadManagerBroadcastReceiver
|
|
||||||
import org.kiwix.kiwixmobile.core.downloader.downloadManager.DownloadManagerMonitor
|
|
||||||
import org.kiwix.kiwixmobile.core.qr.GenerateQR
|
import org.kiwix.kiwixmobile.core.qr.GenerateQR
|
||||||
import org.kiwix.kiwixmobile.core.read_aloud.ReadAloudNotificationManger
|
import org.kiwix.kiwixmobile.core.read_aloud.ReadAloudNotificationManger
|
||||||
import org.kiwix.kiwixmobile.core.webserver.KiwixServer
|
import org.kiwix.kiwixmobile.core.webserver.KiwixServer
|
||||||
|
@ -357,6 +357,7 @@ class DownloadManagerMonitor @Inject constructor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun pauseDownload(downloadId: Long) {
|
fun pauseDownload(downloadId: Long) {
|
||||||
|
Log.e("UPDATE_NOTIFICATION", "pauseDownload: $downloadId")
|
||||||
synchronized(lock) {
|
synchronized(lock) {
|
||||||
updater.onNext {
|
updater.onNext {
|
||||||
if (pauseResumeDownloadInDownloadManagerContentResolver(downloadId, STATUS_PAUSED)) {
|
if (pauseResumeDownloadInDownloadManagerContentResolver(downloadId, STATUS_PAUSED)) {
|
||||||
@ -367,6 +368,7 @@ class DownloadManagerMonitor @Inject constructor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun resumeDownload(downloadId: Long) {
|
fun resumeDownload(downloadId: Long) {
|
||||||
|
Log.e("UPDATE_NOTIFICATION", "resumeDownload: $downloadId")
|
||||||
synchronized(lock) {
|
synchronized(lock) {
|
||||||
updater.onNext {
|
updater.onNext {
|
||||||
if (pauseResumeDownloadInDownloadManagerContentResolver(downloadId, STATUS_RUNNING)) {
|
if (pauseResumeDownloadInDownloadManagerContentResolver(downloadId, STATUS_RUNNING)) {
|
||||||
@ -377,6 +379,7 @@ class DownloadManagerMonitor @Inject constructor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun cancelDownload(downloadId: Long) {
|
fun cancelDownload(downloadId: Long) {
|
||||||
|
Log.e("UPDATE_NOTIFICATION", "cancelDownload: $downloadId")
|
||||||
synchronized(lock) {
|
synchronized(lock) {
|
||||||
downloadManager.remove(downloadId)
|
downloadManager.remove(downloadId)
|
||||||
handleCancelledDownload(downloadId)
|
handleCancelledDownload(downloadId)
|
||||||
|
@ -29,7 +29,7 @@ import org.kiwix.kiwixmobile.core.downloader.downloadManager.DownloadNotificatio
|
|||||||
import org.kiwix.kiwixmobile.core.downloader.downloadManager.DownloadNotificationManager.Companion.NOTIFICATION_ACTION
|
import org.kiwix.kiwixmobile.core.downloader.downloadManager.DownloadNotificationManager.Companion.NOTIFICATION_ACTION
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
const val DOWNLOAD_NOTIFICATION_ACTION = "download_notification_action"
|
const val DOWNLOAD_NOTIFICATION_ACTION = "org.kiwix.kiwixmobile.download_notification_action"
|
||||||
|
|
||||||
class DownloadNotificationActionsBroadcastReceiver @Inject constructor(
|
class DownloadNotificationActionsBroadcastReceiver @Inject constructor(
|
||||||
private val downloadManagerMonitor: DownloadManagerMonitor
|
private val downloadManagerMonitor: DownloadManagerMonitor
|
||||||
@ -37,18 +37,14 @@ class DownloadNotificationActionsBroadcastReceiver @Inject constructor(
|
|||||||
|
|
||||||
override val action: String = DOWNLOAD_NOTIFICATION_ACTION
|
override val action: String = DOWNLOAD_NOTIFICATION_ACTION
|
||||||
override fun onIntentWithActionReceived(context: Context, intent: Intent) {
|
override fun onIntentWithActionReceived(context: Context, intent: Intent) {
|
||||||
Log.e(
|
val downloadId = intent.getIntExtra(EXTRA_DOWNLOAD_ID, -1)
|
||||||
"UPDATED_NOTIFICATION",
|
|
||||||
"updateNotification: ${intent.getStringExtra(NOTIFICATION_ACTION)}\n" +
|
|
||||||
"${intent.getLongExtra(EXTRA_DOWNLOAD_ID, -1L)}"
|
|
||||||
)
|
|
||||||
val downloadId = intent.getLongExtra(EXTRA_DOWNLOAD_ID, -1L)
|
|
||||||
val notificationAction = intent.getStringExtra(NOTIFICATION_ACTION)
|
val notificationAction = intent.getStringExtra(NOTIFICATION_ACTION)
|
||||||
if (downloadId != -1L) {
|
Log.e("UPDATE_NOTIFICATION", "onIntentWithActionReceived: $downloadId , $notificationAction")
|
||||||
|
if (downloadId != -1) {
|
||||||
when (notificationAction) {
|
when (notificationAction) {
|
||||||
ACTION_PAUSE -> downloadManagerMonitor.pauseDownload(downloadId)
|
ACTION_PAUSE -> downloadManagerMonitor.pauseDownload(downloadId.toLong())
|
||||||
ACTION_RESUME -> downloadManagerMonitor.resumeDownload(downloadId)
|
ACTION_RESUME -> downloadManagerMonitor.resumeDownload(downloadId.toLong())
|
||||||
ACTION_CANCEL -> downloadManagerMonitor.cancelDownload(downloadId)
|
ACTION_CANCEL -> downloadManagerMonitor.cancelDownload(downloadId.toLong())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -166,8 +166,7 @@ class DownloadNotificationManager @Inject constructor(
|
|||||||
|
|
||||||
private fun getActionPendingIntent(action: String, downloadId: Int): PendingIntent {
|
private fun getActionPendingIntent(action: String, downloadId: Int): PendingIntent {
|
||||||
val intent =
|
val intent =
|
||||||
Intent(context, DownloadNotificationActionsBroadcastReceiver::class.java).apply {
|
Intent(DOWNLOAD_NOTIFICATION_ACTION).apply {
|
||||||
this.action = DOWNLOAD_NOTIFICATION_ACTION
|
|
||||||
putExtra(NOTIFICATION_ACTION, action)
|
putExtra(NOTIFICATION_ACTION, action)
|
||||||
putExtra(EXTRA_DOWNLOAD_ID, downloadId)
|
putExtra(EXTRA_DOWNLOAD_ID, downloadId)
|
||||||
}
|
}
|
||||||
|
@ -19,12 +19,14 @@
|
|||||||
package org.kiwix.kiwixmobile.core.extensions
|
package org.kiwix.kiwixmobile.core.extensions
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import android.content.Context.RECEIVER_NOT_EXPORTED
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.content.IntentFilter
|
import android.content.IntentFilter
|
||||||
import android.graphics.Bitmap
|
import android.graphics.Bitmap
|
||||||
import android.graphics.Canvas
|
import android.graphics.Canvas
|
||||||
import android.graphics.drawable.BitmapDrawable
|
import android.graphics.drawable.BitmapDrawable
|
||||||
import android.graphics.drawable.Drawable
|
import android.graphics.drawable.Drawable
|
||||||
|
import android.os.Build
|
||||||
import android.util.TypedValue
|
import android.util.TypedValue
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
import androidx.annotation.AttrRes
|
import androidx.annotation.AttrRes
|
||||||
@ -53,7 +55,18 @@ fun Context?.toast(
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun Context.registerReceiver(baseBroadcastReceiver: BaseBroadcastReceiver): Intent? =
|
fun Context.registerReceiver(baseBroadcastReceiver: BaseBroadcastReceiver): Intent? =
|
||||||
registerReceiver(baseBroadcastReceiver, IntentFilter(baseBroadcastReceiver.action))
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
||||||
|
registerReceiver(
|
||||||
|
baseBroadcastReceiver,
|
||||||
|
IntentFilter(baseBroadcastReceiver.action),
|
||||||
|
RECEIVER_NOT_EXPORTED
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
registerReceiver(
|
||||||
|
baseBroadcastReceiver,
|
||||||
|
IntentFilter(baseBroadcastReceiver.action)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
val Context.locale: Locale
|
val Context.locale: Locale
|
||||||
get() = resources.configuration.locales.get(0)
|
get() = resources.configuration.locales.get(0)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user