mirror of
https://github.com/home-assistant/android
synced 2024-07-22 19:04:20 +00:00
Don't use a hardcoded list of apps for Wear OS detection (#2958)
This commit is contained in:
parent
7c792c4d4b
commit
51f9a3fe68
|
@ -0,0 +1,25 @@
|
|||
package io.homeassistant.companion.android.settings.wear
|
||||
|
||||
import android.content.Context
|
||||
import android.util.Log
|
||||
import com.google.android.gms.wearable.Wearable
|
||||
import kotlinx.coroutines.tasks.await
|
||||
|
||||
object SettingsWearDetection {
|
||||
|
||||
private const val TAG = "SettingsWearDetection"
|
||||
|
||||
/**
|
||||
* Returns if there are any Wear OS devices connected to this device. It does **not** indicate
|
||||
* if they have the Home Assistant app installed.
|
||||
*/
|
||||
suspend fun hasAnyNodes(context: Context): Boolean {
|
||||
return try {
|
||||
val nodeClient = Wearable.getNodeClient(context)
|
||||
nodeClient.connectedNodes.await().any()
|
||||
} catch (e: Exception) {
|
||||
Log.e(TAG, "Exception while discovering nodes", e)
|
||||
false
|
||||
}
|
||||
}
|
||||
}
|
|
@ -45,6 +45,7 @@ import io.homeassistant.companion.android.settings.sensor.SensorUpdateFrequencyF
|
|||
import io.homeassistant.companion.android.settings.shortcuts.ManageShortcutsSettingsFragment
|
||||
import io.homeassistant.companion.android.settings.ssid.SsidFragment
|
||||
import io.homeassistant.companion.android.settings.wear.SettingsWearActivity
|
||||
import io.homeassistant.companion.android.settings.wear.SettingsWearDetection
|
||||
import io.homeassistant.companion.android.settings.websocket.WebsocketSettingFragment
|
||||
import io.homeassistant.companion.android.settings.widgets.ManageWidgetsSettingsFragment
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
|
@ -317,18 +318,13 @@ class SettingsFragment constructor(
|
|||
}
|
||||
}
|
||||
|
||||
val pm = requireContext().packageManager
|
||||
val wearCompanionApps = listOf(
|
||||
"com.google.android.wearable.app",
|
||||
"com.google.android.apps.wear.companion",
|
||||
"com.samsung.android.app.watchmanager",
|
||||
"com.montblanc.summit.companion.android"
|
||||
)
|
||||
findPreference<PreferenceCategory>("wear_category")?.isVisible =
|
||||
BuildConfig.FLAVOR == "full" && wearCompanionApps.any { pm.getLaunchIntentForPackage(it) != null }
|
||||
findPreference<Preference>("wear_settings")?.setOnPreferenceClickListener {
|
||||
startActivity(SettingsWearActivity.newInstance(requireContext()))
|
||||
return@setOnPreferenceClickListener true
|
||||
lifecycleScope.launch {
|
||||
findPreference<PreferenceCategory>("wear_category")?.isVisible =
|
||||
SettingsWearDetection.hasAnyNodes(requireContext())
|
||||
findPreference<Preference>("wear_settings")?.setOnPreferenceClickListener {
|
||||
startActivity(SettingsWearActivity.newInstance(requireContext()))
|
||||
return@setOnPreferenceClickListener true
|
||||
}
|
||||
}
|
||||
|
||||
findPreference<Preference>("changelog_github")?.let {
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
package io.homeassistant.companion.android.settings.wear
|
||||
|
||||
import android.content.Context
|
||||
|
||||
object SettingsWearDetection {
|
||||
|
||||
/**
|
||||
* Returns if there are any Wear OS devices connected to this device. It does **not** indicate
|
||||
* if they have the Home Assistant app installed.
|
||||
*/
|
||||
suspend fun hasAnyNodes(context: Context): Boolean {
|
||||
// The minimal version of the app doesn't support Wear OS, so always return false
|
||||
return false
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue