Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update/replace deprecations in app module #3661

Merged
merged 1 commit into from
Jul 17, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -188,12 +188,11 @@ class HighAccuracyLocationService : Service() {

@SuppressLint("MissingPermission")
private fun requestLocationUpdates(intervalInSeconds: Int) {
val request = LocationRequest.create()

val intervalInMS = (intervalInSeconds * 1000).toLong()
request.interval = intervalInMS
request.fastestInterval = intervalInMS / 2
request.priority = Priority.PRIORITY_HIGH_ACCURACY
val request = LocationRequest.Builder(intervalInMS)
.setMinUpdateIntervalMillis(intervalInMS / 2)
.setPriority(Priority.PRIORITY_HIGH_ACCURACY)
.build()

fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(this)
fusedLocationProviderClient?.requestLocationUpdates(request, getLocationUpdateIntent())
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package io.homeassistant.companion.android.onboarding

import android.annotation.SuppressLint
import android.util.Log
import com.google.android.gms.wearable.MessageEvent
import com.google.android.gms.wearable.PutDataMapRequest
Expand All @@ -12,6 +13,7 @@ import kotlinx.coroutines.runBlocking
import javax.inject.Inject

@AndroidEntryPoint
@SuppressLint("VisibleForTests") // https://issuetracker.google.com/issues/239451111
class WearOnboardingListener : WearableListenerService() {

@Inject
Expand All @@ -34,7 +36,7 @@ class WearOnboardingListener : WearableListenerService() {
if (url != null) {
// Put as DataMap in data layer
val putDataReq: PutDataRequest = PutDataMapRequest.create("/home_assistant_instance").run {
dataMap.putString("name", url?.host.toString())
dataMap.putString("name", url.host.toString())
dataMap.putString("url", url.toString())
setUrgent()
asPutDataRequest()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,7 @@ class GeocodeSensorManager : SensorManager {
)
}
} else {
@Suppress("DEPRECATION")
getFromLocation(latitude, longitude, maxResults).orEmpty()
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -194,10 +194,9 @@ class LocationSensorManager : LocationSensorManagerBase() {
ACTION_PROCESS_GEO -> handleGeoUpdate(intent)
ACTION_REQUEST_ACCURATE_LOCATION_UPDATE -> requestSingleAccurateLocation()
ACTION_FORCE_HIGH_ACCURACY -> {
var command = intent.extras?.get("command")?.toString()
when (command) {
when (val command = intent.extras?.getString("command")) {
DeviceCommandData.TURN_ON, DeviceCommandData.TURN_OFF, MessagingManager.FORCE_ON -> {
var turnOn = command != DeviceCommandData.TURN_OFF
val turnOn = command != DeviceCommandData.TURN_OFF
if (turnOn) {
Log.d(TAG, "Forcing of high accuracy mode enabled")
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import io.homeassistant.companion.android.R
import io.homeassistant.companion.android.common.data.integration.Entity
import io.homeassistant.companion.android.common.data.integration.IntegrationRepository
import io.homeassistant.companion.android.common.data.websocket.impl.entities.AreaRegistryResponse
import io.homeassistant.companion.android.common.util.capitalize
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.withContext
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ import io.homeassistant.companion.android.common.data.integration.Entity
import io.homeassistant.companion.android.common.data.integration.IntegrationRepository
import io.homeassistant.companion.android.common.data.integration.domain
import io.homeassistant.companion.android.common.data.websocket.impl.entities.AreaRegistryResponse
import io.homeassistant.companion.android.common.util.capitalize
import java.util.Locale
import io.homeassistant.companion.android.common.R as commonR

@RequiresApi(Build.VERSION_CODES.R)
Expand Down Expand Up @@ -43,7 +45,7 @@ object DefaultButtonControl : HaControl {
"input_button" -> context.getString(commonR.string.domain_input_button)
"scene" -> context.getString(commonR.string.domain_scene)
"script" -> context.getString(commonR.string.domain_script)
else -> entity.domain.replaceFirstChar { it.titlecase() }
else -> entity.domain.capitalize(Locale.getDefault())
}

override suspend fun performAction(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,13 @@ import android.service.controls.actions.ControlAction
import android.service.controls.templates.ControlButton
import android.service.controls.templates.ToggleTemplate
import androidx.annotation.RequiresApi
import androidx.compose.ui.text.capitalize
import io.homeassistant.companion.android.common.data.integration.Entity
import io.homeassistant.companion.android.common.data.integration.IntegrationRepository
import io.homeassistant.companion.android.common.data.integration.domain
import io.homeassistant.companion.android.common.data.websocket.impl.entities.AreaRegistryResponse
import io.homeassistant.companion.android.common.util.capitalize
import java.util.Locale
import io.homeassistant.companion.android.common.R as commonR

@RequiresApi(Build.VERSION_CODES.R)
Expand Down Expand Up @@ -47,7 +50,7 @@ object DefaultSwitchControl : HaControl {
"automation" -> context.getString(commonR.string.domain_automation)
"input_boolean" -> context.getString(commonR.string.domain_input_boolean)
"switch" -> context.getString(commonR.string.domain_switch)
else -> entity.domain.replaceFirstChar { it.titlecase() }
else -> entity.domain.capitalize(Locale.getDefault())
}

override suspend fun performAction(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ import io.homeassistant.companion.android.common.data.integration.Entity
import io.homeassistant.companion.android.common.data.integration.IntegrationRepository
import io.homeassistant.companion.android.common.data.integration.domain
import io.homeassistant.companion.android.common.data.websocket.impl.entities.AreaRegistryResponse
import io.homeassistant.companion.android.common.util.capitalize
import java.util.Locale

@RequiresApi(Build.VERSION_CODES.R)
object HaFailedControl : HaControl {
Expand All @@ -35,7 +37,7 @@ object HaFailedControl : HaControl {
DeviceTypes.TYPE_UNKNOWN

override fun getDomainString(context: Context, entity: Entity<Map<String, Any>>): String =
entity.domain.replaceFirstChar { it.titlecase() }
entity.domain.capitalize(Locale.getDefault())

override suspend fun performAction(
integrationRepository: IntegrationRepository,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import android.nfc.NfcAdapter
import android.nfc.Tag
import android.nfc.tech.Ndef
import android.nfc.tech.NdefFormatable
import android.os.Build
import io.homeassistant.companion.android.BuildConfig
import java.io.IOException

Expand All @@ -20,7 +21,12 @@ object NFCUtil {
return null
}

val rawMessages = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES)
val rawMessages = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES, NdefMessage::class.java)
} else {
@Suppress("DEPRECATION")
intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES)
}
val ndefMessage = rawMessages?.get(0) as NdefMessage?
return ndefMessage?.records?.get(0)?.toUri()
}
Expand All @@ -35,7 +41,12 @@ object NFCUtil {
val nfcMessage = NdefMessage(arrayOf(nfcRecord) + applicationRecords)
val nfcFallbackMessage = NdefMessage(arrayOf(nfcRecord))
intent?.let {
val tag = it.getParcelableExtra<Tag>(NfcAdapter.EXTRA_TAG)
val tag = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
it.getParcelableExtra(NfcAdapter.EXTRA_TAG, Tag::class.java)
} else {
@Suppress("DEPRECATION")
it.getParcelableExtra(NfcAdapter.EXTRA_TAG)
}
return writeMessageToTag(nfcMessage, nfcFallbackMessage, tag)
}
return false
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -839,10 +839,10 @@ class MessagingManager @Inject constructor(
name,
value.split(";").map { it.toBoolean() }.toBooleanArray()
)
"char" -> intent.putExtra(name, value[0].toChar())
"char" -> intent.putExtra(name, value[0])
"char[]" -> intent.putExtra(
name,
value.split(";").map { it[0].toChar() }.toCharArray()
value.split(";").map { it[0] }.toCharArray()
)
"String" -> intent.putExtra(name, value)
"String.urlencoded", "urlencoded" -> intent.putExtra(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package io.homeassistant.companion.android.notifications
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.os.Build
import android.os.Handler
import android.util.Log
import android.widget.Toast
Expand Down Expand Up @@ -44,8 +45,12 @@ class NotificationActionReceiver : BroadcastReceiver() {
lateinit var notificationDao: NotificationDao

override fun onReceive(context: Context, intent: Intent) {
val notificationAction =
intent.getParcelableExtra<NotificationAction>(EXTRA_NOTIFICATION_ACTION)
val notificationAction = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
intent.getParcelableExtra(EXTRA_NOTIFICATION_ACTION, NotificationAction::class.java)
} else {
@Suppress("DEPRECATION")
intent.getParcelableExtra(EXTRA_NOTIFICATION_ACTION)
}

if (notificationAction == null) {
Log.e(TAG, "Failed to get notification action.")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package io.homeassistant.companion.android.notifications
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.os.Build
import android.util.Log
import androidx.core.app.NotificationManagerCompat
import dagger.hilt.android.AndroidEntryPoint
Expand Down Expand Up @@ -33,8 +34,14 @@ class NotificationDeleteReceiver : BroadcastReceiver() {
@Inject
lateinit var notificationDao: NotificationDao

@Suppress("UNCHECKED_CAST")
override fun onReceive(context: Context, intent: Intent) {
val hashData = intent.getSerializableExtra(EXTRA_DATA) as HashMap<String, *>
val hashData = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
intent.getSerializableExtra(EXTRA_DATA, HashMap::class.java)
} else {
@Suppress("DEPRECATION")
intent.getSerializableExtra(EXTRA_DATA)
} as HashMap<String, *>
val group = intent.getStringExtra(EXTRA_NOTIFICATION_GROUP)
val groupId = intent.getIntExtra(EXTRA_NOTIFICATION_GROUP_ID, -1)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import android.Manifest
import android.annotation.SuppressLint
import android.app.Activity
import android.content.Intent
import android.content.pm.PackageManager
import android.net.Uri
import android.os.Build
import android.os.Bundle
Expand All @@ -13,6 +12,7 @@ import android.provider.Settings
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AlertDialog
import androidx.compose.ui.platform.ComposeView
import androidx.core.content.getSystemService
Expand All @@ -30,10 +30,8 @@ import io.homeassistant.companion.android.common.R as commonR
@AndroidEntryPoint
class MobileAppIntegrationFragment : Fragment() {

companion object {
private const val BACKGROUND_REQUEST = 99

private const val LOCATION_REQUEST_CODE = 0
private val requestLocationPermissions = registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) {
onLocationPermissionResult(it)
}

private var dialog: AlertDialog? = null
Expand Down Expand Up @@ -92,54 +90,43 @@ class MobileAppIntegrationFragment : Fragment() {

private fun requestPermissions(sensorId: String) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
this@MobileAppIntegrationFragment.requestPermissions(
requestLocationPermissions.launch(
LocationSensorManager().requiredPermissions(sensorId)
.toList().minus(Manifest.permission.ACCESS_BACKGROUND_LOCATION)
.toTypedArray(),
LOCATION_REQUEST_CODE
.toTypedArray()
)
} else {
this@MobileAppIntegrationFragment.requestPermissions(
LocationSensorManager().requiredPermissions(sensorId),
LOCATION_REQUEST_CODE
)
requestLocationPermissions.launch(LocationSensorManager().requiredPermissions(sensorId))
}
}

override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<out String>,
grantResults: IntArray
private fun onLocationPermissionResult(
results: Map<String, Boolean>
) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)

dialog?.dismiss()

if (permissions.contains(Manifest.permission.ACCESS_FINE_LOCATION) &&
if (
results[Manifest.permission.ACCESS_FINE_LOCATION] == true &&
Build.VERSION.SDK_INT >= Build.VERSION_CODES.R
) {
requestPermissions(
arrayOf(Manifest.permission.ACCESS_BACKGROUND_LOCATION),
LOCATION_REQUEST_CODE
)
requestLocationPermissions.launch(arrayOf(Manifest.permission.ACCESS_BACKGROUND_LOCATION))
return
}

if (requestCode == LOCATION_REQUEST_CODE) {
val hasPermission = grantResults.all { it == PackageManager.PERMISSION_GRANTED }
viewModel.setLocationTracking(hasPermission)
requestBackgroundAccess()
}
val hasPermission = results.values.all { it }
viewModel.setLocationTracking(hasPermission)
requestBackgroundAccess()
}

@SuppressLint("BatteryLife")
private fun requestBackgroundAccess() {
val intent: Intent
if (!isIgnoringBatteryOptimizations()) {
intent = Intent(
Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS,
Uri.parse("package:${activity?.packageName}")
startActivity(
Intent(
Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS,
Uri.parse("package:${activity?.packageName}")
)
)
startActivityForResult(intent, BACKGROUND_REQUEST)
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.Button
import androidx.compose.material.Icon
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Text
import androidx.compose.material.TextButton
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -211,6 +211,7 @@ abstract class TileExtensions : TileService() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
vm?.vibrate(VibrationEffect.createPredefined(VibrationEffect.EFFECT_CLICK))
} else {
@Suppress("DEPRECATION")
vm?.vibrate(500)
}
}
Expand Down Expand Up @@ -282,6 +283,7 @@ abstract class TileExtensions : TileService() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
vm?.vibrate(VibrationEffect.createPredefined(VibrationEffect.EFFECT_DOUBLE_CLICK))
} else {
@Suppress("DEPRECATION")
vm?.vibrate(1000)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,12 @@ class LastAppSensorManager : SensorManager {

try {
val pm = context.packageManager
val appInfo = pm.getApplicationInfo(lastApp, PackageManager.GET_META_DATA)
val appInfo = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
pm.getApplicationInfo(lastApp, PackageManager.ApplicationInfoFlags.of(PackageManager.GET_META_DATA.toLong()))
} else {
@Suppress("DEPRECATION")
pm.getApplicationInfo(lastApp, PackageManager.GET_META_DATA)
}
appLabel = pm.getApplicationLabel(appInfo).toString()
} catch (e: Exception) {
Log.e(TAG, "Unable to get package label for: $lastApp", e)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -313,6 +313,7 @@ class NotificationSensorManager : NotificationListenerService(), SensorManager {
private fun mappedBundle(bundle: Bundle, keySuffix: String = ""): Map<String, Any?>? {
return try {
bundle.keySet().associate { key ->
@Suppress("DEPRECATION")
val keyValue = when (val value = bundle.get(key)) {
is Array<*> -> {
if (value.all { it is Bundle }) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ class SensorWorker(
.build()

WorkManager.getInstance(context)
.enqueueUniquePeriodicWork(TAG, ExistingPeriodicWorkPolicy.REPLACE, sensorWorker)
.enqueueUniquePeriodicWork(TAG, ExistingPeriodicWorkPolicy.CANCEL_AND_REENQUEUE, sensorWorker)
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ class ManageControlsSettingsFragment : Fragment() {
setHasOptionsMenu(true)
}

@Deprecated("Deprecated in Java")
override fun onPrepareOptionsMenu(menu: Menu) {
super.onPrepareOptionsMenu(menu)

Expand Down
Loading