mirror of
https://github.com/nextcloud/talk-android
synced 2025-07-08 21:40:43 +01:00
Set minSdkVersion to 24 + remove checks
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
This commit is contained in:
parent
fb0a6aa4ce
commit
73d3ecac0e
@ -42,7 +42,7 @@ android {
|
|||||||
namespace 'com.nextcloud.talk'
|
namespace 'com.nextcloud.talk'
|
||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
minSdkVersion 23
|
minSdkVersion 24
|
||||||
targetSdkVersion 31
|
targetSdkVersion 31
|
||||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||||
|
|
||||||
|
@ -41,7 +41,6 @@ import android.text.TextUtils
|
|||||||
import android.util.Base64
|
import android.util.Base64
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
import androidx.annotation.RequiresApi
|
|
||||||
import androidx.core.app.NotificationCompat
|
import androidx.core.app.NotificationCompat
|
||||||
import androidx.core.app.NotificationManagerCompat
|
import androidx.core.app.NotificationManagerCompat
|
||||||
import androidx.core.app.Person
|
import androidx.core.app.Person
|
||||||
@ -483,19 +482,13 @@ class NotificationWorker(context: Context, workerParams: WorkerParameters) : Wor
|
|||||||
val systemNotificationId: Int =
|
val systemNotificationId: Int =
|
||||||
activeStatusBarNotification?.id ?: calculateCRC32(System.currentTimeMillis().toString()).toInt()
|
activeStatusBarNotification?.id ?: calculateCRC32(System.currentTimeMillis().toString()).toInt()
|
||||||
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N &&
|
if (TYPE_CHAT == pushMessage.type && pushMessage.notificationUser != null) {
|
||||||
TYPE_CHAT == pushMessage.type &&
|
|
||||||
pushMessage.notificationUser != null
|
|
||||||
) {
|
|
||||||
prepareChatNotification(notificationBuilder, activeStatusBarNotification, systemNotificationId)
|
prepareChatNotification(notificationBuilder, activeStatusBarNotification, systemNotificationId)
|
||||||
addReplyAction(notificationBuilder, systemNotificationId)
|
addReplyAction(notificationBuilder, systemNotificationId)
|
||||||
addMarkAsReadAction(notificationBuilder, systemNotificationId)
|
addMarkAsReadAction(notificationBuilder, systemNotificationId)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N &&
|
if (TYPE_RECORDING == pushMessage.type && ncNotification != null) {
|
||||||
TYPE_RECORDING == pushMessage.type &&
|
|
||||||
ncNotification != null
|
|
||||||
) {
|
|
||||||
addDismissRecordingAvailableAction(notificationBuilder, systemNotificationId, ncNotification)
|
addDismissRecordingAvailableAction(notificationBuilder, systemNotificationId, ncNotification)
|
||||||
addShareRecordingToChatAction(notificationBuilder, systemNotificationId, ncNotification)
|
addShareRecordingToChatAction(notificationBuilder, systemNotificationId, ncNotification)
|
||||||
}
|
}
|
||||||
@ -536,7 +529,6 @@ class NotificationWorker(context: Context, workerParams: WorkerParameters) : Wor
|
|||||||
return crc32.value
|
return crc32.value
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequiresApi(api = Build.VERSION_CODES.N)
|
|
||||||
private fun prepareChatNotification(
|
private fun prepareChatNotification(
|
||||||
notificationBuilder: NotificationCompat.Builder,
|
notificationBuilder: NotificationCompat.Builder,
|
||||||
activeStatusBarNotification: StatusBarNotification?,
|
activeStatusBarNotification: StatusBarNotification?,
|
||||||
@ -616,7 +608,6 @@ class NotificationWorker(context: Context, workerParams: WorkerParameters) : Wor
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequiresApi(api = Build.VERSION_CODES.N)
|
|
||||||
private fun addReplyAction(notificationBuilder: NotificationCompat.Builder, systemNotificationId: Int) {
|
private fun addReplyAction(notificationBuilder: NotificationCompat.Builder, systemNotificationId: Int) {
|
||||||
val replyLabel = context!!.resources.getString(R.string.nc_reply)
|
val replyLabel = context!!.resources.getString(R.string.nc_reply)
|
||||||
val remoteInput = RemoteInput.Builder(NotificationUtils.KEY_DIRECT_REPLY)
|
val remoteInput = RemoteInput.Builder(NotificationUtils.KEY_DIRECT_REPLY)
|
||||||
@ -637,7 +628,6 @@ class NotificationWorker(context: Context, workerParams: WorkerParameters) : Wor
|
|||||||
notificationBuilder.addAction(replyAction)
|
notificationBuilder.addAction(replyAction)
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequiresApi(api = Build.VERSION_CODES.N)
|
|
||||||
private fun addDismissRecordingAvailableAction(
|
private fun addDismissRecordingAvailableAction(
|
||||||
notificationBuilder: NotificationCompat.Builder,
|
notificationBuilder: NotificationCompat.Builder,
|
||||||
systemNotificationId: Int,
|
systemNotificationId: Int,
|
||||||
@ -671,7 +661,6 @@ class NotificationWorker(context: Context, workerParams: WorkerParameters) : Wor
|
|||||||
notificationBuilder.addAction(dismissAction)
|
notificationBuilder.addAction(dismissAction)
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequiresApi(api = Build.VERSION_CODES.N)
|
|
||||||
private fun addShareRecordingToChatAction(
|
private fun addShareRecordingToChatAction(
|
||||||
notificationBuilder: NotificationCompat.Builder,
|
notificationBuilder: NotificationCompat.Builder,
|
||||||
systemNotificationId: Int,
|
systemNotificationId: Int,
|
||||||
@ -716,7 +705,6 @@ class NotificationWorker(context: Context, workerParams: WorkerParameters) : Wor
|
|||||||
notificationBuilder.addAction(shareRecordingAction)
|
notificationBuilder.addAction(shareRecordingAction)
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequiresApi(api = Build.VERSION_CODES.N)
|
|
||||||
private fun getStyle(person: Person, style: NotificationCompat.MessagingStyle?): NotificationCompat.MessagingStyle {
|
private fun getStyle(person: Person, style: NotificationCompat.MessagingStyle?): NotificationCompat.MessagingStyle {
|
||||||
val newStyle = NotificationCompat.MessagingStyle(person)
|
val newStyle = NotificationCompat.MessagingStyle(person)
|
||||||
newStyle.conversationTitle = pushMessage.subject
|
newStyle.conversationTitle = pushMessage.subject
|
||||||
|
@ -25,11 +25,9 @@ import android.app.NotificationManager
|
|||||||
import android.content.BroadcastReceiver
|
import android.content.BroadcastReceiver
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.os.Build
|
|
||||||
import android.text.SpannableStringBuilder
|
import android.text.SpannableStringBuilder
|
||||||
import android.text.style.ForegroundColorSpan
|
import android.text.style.ForegroundColorSpan
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import androidx.annotation.RequiresApi
|
|
||||||
import androidx.core.app.NotificationCompat
|
import androidx.core.app.NotificationCompat
|
||||||
import androidx.core.app.NotificationManagerCompat
|
import androidx.core.app.NotificationManagerCompat
|
||||||
import androidx.core.app.Person
|
import androidx.core.app.Person
|
||||||
@ -104,12 +102,10 @@ class DirectReplyReceiver : BroadcastReceiver() {
|
|||||||
// unused atm
|
// unused atm
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequiresApi(Build.VERSION_CODES.N)
|
|
||||||
override fun onNext(genericOverall: GenericOverall) {
|
override fun onNext(genericOverall: GenericOverall) {
|
||||||
confirmReplySent()
|
confirmReplySent()
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequiresApi(Build.VERSION_CODES.N)
|
|
||||||
override fun onError(e: Throwable) {
|
override fun onError(e: Throwable) {
|
||||||
Log.e(TAG, "Failed to send reply", e)
|
Log.e(TAG, "Failed to send reply", e)
|
||||||
informReplyFailed()
|
informReplyFailed()
|
||||||
@ -121,12 +117,10 @@ class DirectReplyReceiver : BroadcastReceiver() {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequiresApi(Build.VERSION_CODES.N)
|
|
||||||
private fun confirmReplySent() {
|
private fun confirmReplySent() {
|
||||||
appendMessageToNotification(replyMessage!!)
|
appendMessageToNotification(replyMessage!!)
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequiresApi(Build.VERSION_CODES.N)
|
|
||||||
private fun informReplyFailed() {
|
private fun informReplyFailed() {
|
||||||
val errorColor = ForegroundColorSpan(context.resources.getColor(R.color.medium_emphasis_text, context.theme))
|
val errorColor = ForegroundColorSpan(context.resources.getColor(R.color.medium_emphasis_text, context.theme))
|
||||||
val errorMessageHeader = context.resources.getString(R.string.nc_message_failed_to_send)
|
val errorMessageHeader = context.resources.getString(R.string.nc_message_failed_to_send)
|
||||||
@ -134,13 +128,11 @@ class DirectReplyReceiver : BroadcastReceiver() {
|
|||||||
appendMessageToNotification(errorMessage)
|
appendMessageToNotification(errorMessage)
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequiresApi(Build.VERSION_CODES.N)
|
|
||||||
private fun findActiveNotification(notificationId: Int): Notification? {
|
private fun findActiveNotification(notificationId: Int): Notification? {
|
||||||
val notificationManager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
|
val notificationManager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
|
||||||
return notificationManager.activeNotifications.find { it.id == notificationId }?.notification
|
return notificationManager.activeNotifications.find { it.id == notificationId }?.notification
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequiresApi(Build.VERSION_CODES.N)
|
|
||||||
private fun appendMessageToNotification(reply: CharSequence) {
|
private fun appendMessageToNotification(reply: CharSequence) {
|
||||||
// Implementation inspired by the SO question and article below:
|
// Implementation inspired by the SO question and article below:
|
||||||
// https://stackoverflow.com/questions/51549456/android-o-notification-for-direct-reply-message
|
// https://stackoverflow.com/questions/51549456/android-o-notification-for-direct-reply-message
|
||||||
|
@ -26,9 +26,7 @@ import android.app.NotificationManager
|
|||||||
import android.content.BroadcastReceiver
|
import android.content.BroadcastReceiver
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.os.Build
|
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import androidx.annotation.RequiresApi
|
|
||||||
import autodagger.AutoInjector
|
import autodagger.AutoInjector
|
||||||
import com.nextcloud.talk.api.NcApi
|
import com.nextcloud.talk.api.NcApi
|
||||||
import com.nextcloud.talk.application.NextcloudTalkApplication
|
import com.nextcloud.talk.application.NextcloudTalkApplication
|
||||||
@ -97,12 +95,10 @@ class MarkAsReadReceiver : BroadcastReceiver() {
|
|||||||
// unused atm
|
// unused atm
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequiresApi(Build.VERSION_CODES.N)
|
|
||||||
override fun onNext(genericOverall: GenericOverall) {
|
override fun onNext(genericOverall: GenericOverall) {
|
||||||
cancelNotification(systemNotificationId!!)
|
cancelNotification(systemNotificationId!!)
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequiresApi(Build.VERSION_CODES.N)
|
|
||||||
override fun onError(e: Throwable) {
|
override fun onError(e: Throwable) {
|
||||||
Log.e(TAG, "Failed to set chat read marker", e)
|
Log.e(TAG, "Failed to set chat read marker", e)
|
||||||
}
|
}
|
||||||
@ -113,7 +109,6 @@ class MarkAsReadReceiver : BroadcastReceiver() {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequiresApi(Build.VERSION_CODES.N)
|
|
||||||
private fun cancelNotification(notificationId: Int) {
|
private fun cancelNotification(notificationId: Int) {
|
||||||
val notificationManager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
|
val notificationManager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
|
||||||
notificationManager.cancel(notificationId)
|
notificationManager.cancel(notificationId)
|
||||||
|
@ -25,7 +25,6 @@ import android.content.res.Resources
|
|||||||
import android.icu.text.RelativeDateTimeFormatter
|
import android.icu.text.RelativeDateTimeFormatter
|
||||||
import android.icu.text.RelativeDateTimeFormatter.Direction
|
import android.icu.text.RelativeDateTimeFormatter.Direction
|
||||||
import android.icu.text.RelativeDateTimeFormatter.RelativeUnit
|
import android.icu.text.RelativeDateTimeFormatter.RelativeUnit
|
||||||
import android.os.Build
|
|
||||||
import com.nextcloud.talk.R
|
import com.nextcloud.talk.R
|
||||||
import java.text.DateFormat
|
import java.text.DateFormat
|
||||||
import java.util.Calendar
|
import java.util.Calendar
|
||||||
@ -40,23 +39,13 @@ class DateUtils(val context: Context) {
|
|||||||
private var format: DateFormat = DateFormat.getDateTimeInstance(
|
private var format: DateFormat = DateFormat.getDateTimeInstance(
|
||||||
DateFormat.DEFAULT, // dateStyle
|
DateFormat.DEFAULT, // dateStyle
|
||||||
DateFormat.SHORT, // timeStyle
|
DateFormat.SHORT, // timeStyle
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
context.resources.configuration.locales[0]
|
||||||
context.resources.configuration.locales[0]
|
|
||||||
} else {
|
|
||||||
@Suppress("DEPRECATION")
|
|
||||||
context.resources.configuration.locale
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
/* date formatter in local timezone and locale */
|
/* date formatter in local timezone and locale */
|
||||||
private var formatTime: DateFormat = DateFormat.getTimeInstance(
|
private var formatTime: DateFormat = DateFormat.getTimeInstance(
|
||||||
DateFormat.SHORT, // timeStyle
|
DateFormat.SHORT, // timeStyle
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
context.resources.configuration.locales[0]
|
||||||
context.resources.configuration.locales[0]
|
|
||||||
} else {
|
|
||||||
@Suppress("DEPRECATION")
|
|
||||||
context.resources.configuration.locale
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
init {
|
init {
|
||||||
@ -73,48 +62,44 @@ class DateUtils(val context: Context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun relativeStartTimeForLobby(timestampMilliseconds: Long, resources: Resources): String {
|
fun relativeStartTimeForLobby(timestampMilliseconds: Long, resources: Resources): String {
|
||||||
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
val fmt = RelativeDateTimeFormatter.getInstance()
|
||||||
val fmt = RelativeDateTimeFormatter.getInstance()
|
val timeLeftMillis = timestampMilliseconds - System.currentTimeMillis()
|
||||||
val timeLeftMillis = timestampMilliseconds - System.currentTimeMillis()
|
val minutes = timeLeftMillis.toDouble() / DateConstants.SECOND_DIVIDER / DateConstants.MINUTES_DIVIDER
|
||||||
val minutes = timeLeftMillis.toDouble() / DateConstants.SECOND_DIVIDER / DateConstants.MINUTES_DIVIDER
|
val hours = minutes / DateConstants.HOURS_DIVIDER
|
||||||
val hours = minutes / DateConstants.HOURS_DIVIDER
|
val days = hours / DateConstants.DAYS_DIVIDER
|
||||||
val days = hours / DateConstants.DAYS_DIVIDER
|
|
||||||
|
|
||||||
val minutesInt = minutes.roundToInt()
|
val minutesInt = minutes.roundToInt()
|
||||||
val hoursInt = hours.roundToInt()
|
val hoursInt = hours.roundToInt()
|
||||||
val daysInt = days.roundToInt()
|
val daysInt = days.roundToInt()
|
||||||
|
|
||||||
when {
|
return when {
|
||||||
daysInt > 0 -> {
|
daysInt > 0 -> {
|
||||||
fmt.format(
|
fmt.format(
|
||||||
daysInt.toDouble(),
|
daysInt.toDouble(),
|
||||||
Direction.NEXT,
|
Direction.NEXT,
|
||||||
RelativeUnit.DAYS
|
RelativeUnit.DAYS
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
hoursInt > 0 -> {
|
hoursInt > 0 -> {
|
||||||
fmt.format(
|
fmt.format(
|
||||||
hoursInt.toDouble(),
|
hoursInt.toDouble(),
|
||||||
Direction.NEXT,
|
Direction.NEXT,
|
||||||
RelativeUnit.HOURS
|
RelativeUnit.HOURS
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
minutesInt > 1 -> {
|
minutesInt > 1 -> {
|
||||||
fmt.format(
|
fmt.format(
|
||||||
minutesInt.toDouble(),
|
minutesInt.toDouble(),
|
||||||
Direction.NEXT,
|
Direction.NEXT,
|
||||||
RelativeUnit.MINUTES
|
RelativeUnit.MINUTES
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
else -> {
|
else -> {
|
||||||
resources.getString(R.string.nc_lobby_start_soon)
|
resources.getString(R.string.nc_lobby_start_soon)
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
""
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -25,7 +25,6 @@ import android.content.ComponentName
|
|||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.os.Build
|
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.widget.ImageView
|
import android.widget.ImageView
|
||||||
@ -184,19 +183,13 @@ class FileViewerUtils(private val context: Context, private val user: User) {
|
|||||||
private fun openFileByExternalApp(fileName: String, mimetype: String) {
|
private fun openFileByExternalApp(fileName: String, mimetype: String) {
|
||||||
val path = context.cacheDir.absolutePath + "/" + fileName
|
val path = context.cacheDir.absolutePath + "/" + fileName
|
||||||
val file = File(path)
|
val file = File(path)
|
||||||
val intent: Intent
|
val intent = Intent()
|
||||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
|
intent.action = Intent.ACTION_VIEW
|
||||||
intent = Intent(Intent.ACTION_VIEW)
|
val pdfURI = FileProvider.getUriForFile(context, context.packageName, file)
|
||||||
intent.setDataAndType(Uri.fromFile(file), mimetype)
|
intent.setDataAndType(pdfURI, mimetype)
|
||||||
intent.flags = Intent.FLAG_ACTIVITY_NO_HISTORY
|
intent.flags = Intent.FLAG_ACTIVITY_NO_HISTORY
|
||||||
} else {
|
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
|
||||||
intent = Intent()
|
|
||||||
intent.action = Intent.ACTION_VIEW
|
|
||||||
val pdfURI = FileProvider.getUriForFile(context, context.packageName, file)
|
|
||||||
intent.setDataAndType(pdfURI, mimetype)
|
|
||||||
intent.flags = Intent.FLAG_ACTIVITY_NO_HISTORY
|
|
||||||
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
|
|
||||||
}
|
|
||||||
try {
|
try {
|
||||||
if (intent.resolveActivity(context.packageManager) != null) {
|
if (intent.resolveActivity(context.packageManager) != null) {
|
||||||
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||||
|
@ -55,12 +55,7 @@ object LoggingUtils {
|
|||||||
// emailIntent.type = TEXT_PLAIN
|
// emailIntent.type = TEXT_PLAIN
|
||||||
// emailIntent.flags = Intent.FLAG_GRANT_READ_URI_PERMISSION
|
// emailIntent.flags = Intent.FLAG_GRANT_READ_URI_PERMISSION
|
||||||
// val uri: Uri
|
// val uri: Uri
|
||||||
//
|
// uri = FileProvider.getUriForFile(context, BuildConfig.APPLICATION_ID, logFile)
|
||||||
// if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
|
|
||||||
// uri = Uri.fromFile(logFile)
|
|
||||||
// } else {
|
|
||||||
// uri = FileProvider.getUriForFile(context, BuildConfig.APPLICATION_ID, logFile)
|
|
||||||
// }
|
|
||||||
//
|
//
|
||||||
// emailIntent.putExtra(Intent.EXTRA_STREAM, uri)
|
// emailIntent.putExtra(Intent.EXTRA_STREAM, uri)
|
||||||
// emailIntent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
|
// emailIntent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
|
||||||
|
@ -27,14 +27,15 @@ import android.annotation.SuppressLint;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.res.Configuration;
|
import android.content.res.Configuration;
|
||||||
import android.net.wifi.WifiManager;
|
import android.net.wifi.WifiManager;
|
||||||
import android.os.Build;
|
|
||||||
import android.os.PowerManager;
|
import android.os.PowerManager;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
import autodagger.AutoInjector;
|
|
||||||
import com.nextcloud.talk.application.NextcloudTalkApplication;
|
import com.nextcloud.talk.application.NextcloudTalkApplication;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
|
||||||
|
import autodagger.AutoInjector;
|
||||||
|
|
||||||
@AutoInjector(NextcloudTalkApplication.class)
|
@AutoInjector(NextcloudTalkApplication.class)
|
||||||
|
|
||||||
public class PowerManagerUtils {
|
public class PowerManagerUtils {
|
||||||
@ -56,9 +57,7 @@ public class PowerManagerUtils {
|
|||||||
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
|
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
|
||||||
fullLock = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "nctalk:fullwakelock");
|
fullLock = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "nctalk:fullwakelock");
|
||||||
partialLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "nctalk:partialwakelock");
|
partialLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "nctalk:partialwakelock");
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
proximityLock = new ProximityLock(pm);
|
||||||
proximityLock = new ProximityLock(pm);
|
|
||||||
}
|
|
||||||
|
|
||||||
// we suppress a possible leak because this is indeed application context
|
// we suppress a possible leak because this is indeed application context
|
||||||
@SuppressLint("WifiManagerPotentialLeak") WifiManager wm = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
|
@SuppressLint("WifiManagerPotentialLeak") WifiManager wm = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
|
||||||
@ -127,10 +126,7 @@ public class PowerManagerUtils {
|
|||||||
if (!wifiLock.isHeld()) {
|
if (!wifiLock.isHeld()) {
|
||||||
wifiLock.acquire();
|
wifiLock.acquire();
|
||||||
}
|
}
|
||||||
|
proximityLock.release();
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
|
||||||
proximityLock.release();
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case PARTIAL:
|
case PARTIAL:
|
||||||
if (!partialLock.isHeld()) {
|
if (!partialLock.isHeld()) {
|
||||||
@ -142,18 +138,13 @@ public class PowerManagerUtils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fullLock.release();
|
fullLock.release();
|
||||||
|
proximityLock.release();
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
|
||||||
proximityLock.release();
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case SLEEP:
|
case SLEEP:
|
||||||
fullLock.release();
|
fullLock.release();
|
||||||
partialLock.release();
|
partialLock.release();
|
||||||
wifiLock.release();
|
wifiLock.release();
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
proximityLock.release();
|
||||||
proximityLock.release();
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case PROXIMITY:
|
case PROXIMITY:
|
||||||
if (!partialLock.isHeld()) {
|
if (!partialLock.isHeld()) {
|
||||||
@ -167,9 +158,7 @@ public class PowerManagerUtils {
|
|||||||
fullLock.release(
|
fullLock.release(
|
||||||
|
|
||||||
);
|
);
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
proximityLock.acquire();
|
||||||
proximityLock.acquire();
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
// something went very very wrong
|
// something went very very wrong
|
||||||
|
@ -21,21 +21,17 @@
|
|||||||
package com.nextcloud.talk.utils.power;
|
package com.nextcloud.talk.utils.power;
|
||||||
|
|
||||||
import android.annotation.SuppressLint;
|
import android.annotation.SuppressLint;
|
||||||
import android.os.Build;
|
|
||||||
import android.os.PowerManager;
|
import android.os.PowerManager;
|
||||||
import androidx.annotation.RequiresApi;
|
|
||||||
|
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
class ProximityLock {
|
class ProximityLock {
|
||||||
private final Optional<PowerManager.WakeLock> proximityLock;
|
private final Optional<PowerManager.WakeLock> proximityLock;
|
||||||
|
|
||||||
@RequiresApi(api = Build.VERSION_CODES.N)
|
|
||||||
ProximityLock(PowerManager pm) {
|
ProximityLock(PowerManager pm) {
|
||||||
proximityLock = getProximityLock(pm);
|
proximityLock = getProximityLock(pm);
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequiresApi(api = Build.VERSION_CODES.N)
|
|
||||||
private Optional<PowerManager.WakeLock> getProximityLock(PowerManager powerManager) {
|
private Optional<PowerManager.WakeLock> getProximityLock(PowerManager powerManager) {
|
||||||
if (powerManager.isWakeLockLevelSupported(PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK)) {
|
if (powerManager.isWakeLockLevelSupported(PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK)) {
|
||||||
return Optional.ofNullable(powerManager.newWakeLock(PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK, "nctalk:proximitylock"));
|
return Optional.ofNullable(powerManager.newWakeLock(PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK, "nctalk:proximitylock"));
|
||||||
@ -45,7 +41,6 @@ class ProximityLock {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@SuppressLint("WakelockTimeout")
|
@SuppressLint("WakelockTimeout")
|
||||||
@RequiresApi(api = Build.VERSION_CODES.N)
|
|
||||||
void acquire() {
|
void acquire() {
|
||||||
if (!proximityLock.isPresent() || proximityLock.get().isHeld()) {
|
if (!proximityLock.isPresent() || proximityLock.get().isHeld()) {
|
||||||
return;
|
return;
|
||||||
@ -54,7 +49,6 @@ class ProximityLock {
|
|||||||
proximityLock.get().acquire();
|
proximityLock.get().acquire();
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequiresApi(api = Build.VERSION_CODES.N)
|
|
||||||
void release() {
|
void release() {
|
||||||
if (!proximityLock.isPresent() || !proximityLock.get().isHeld()) {
|
if (!proximityLock.isPresent() || !proximityLock.get().isHeld()) {
|
||||||
return;
|
return;
|
||||||
|
Loading…
Reference in New Issue
Block a user