diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ca55d98b0..ae30f332c 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -182,6 +182,14 @@
+
+
+
+
+
+
+
+
diff --git a/app/src/main/java/io/homeassistant/companion/android/share/ShareActivity.kt b/app/src/main/java/io/homeassistant/companion/android/share/ShareActivity.kt
new file mode 100644
index 000000000..b40c09670
--- /dev/null
+++ b/app/src/main/java/io/homeassistant/companion/android/share/ShareActivity.kt
@@ -0,0 +1,68 @@
+package io.homeassistant.companion.android.share
+
+import android.content.Intent
+import android.os.Bundle
+import android.util.Log
+import android.widget.Toast
+import androidx.appcompat.app.AppCompatActivity
+import androidx.core.app.ActivityCompat
+import io.homeassistant.companion.android.R
+import io.homeassistant.companion.android.common.dagger.GraphComponentAccessor
+import io.homeassistant.companion.android.common.data.integration.IntegrationRepository
+import javax.inject.Inject
+import kotlinx.coroutines.runBlocking
+import okhttp3.HttpUrl.Companion.toHttpUrlOrNull
+
+class ShareActivity : AppCompatActivity() {
+
+ companion object {
+ private const val TAG = "ShareActivity"
+ }
+
+ @Inject
+ lateinit var integrationRepository: IntegrationRepository
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+
+ DaggerShareComponent.builder()
+ .appComponent((application as GraphComponentAccessor).appComponent)
+ .build()
+ .inject(this)
+
+ val data = mutableMapOf(
+ "caller" to ActivityCompat.getReferrer(this).toString()
+ )
+
+ if (intent?.action == Intent.ACTION_SEND) {
+ intent.getStringExtra(Intent.EXTRA_SUBJECT)?.let {
+ data["subject"] = it
+ }
+ intent.getStringExtra(Intent.EXTRA_TEXT)?.let {
+ if (it.toHttpUrlOrNull() == null)
+ data["text"] = it
+ else
+ data["url"] = it
+ }
+ }
+ runBlocking {
+ try {
+ integrationRepository.fireEvent("mobile_app.share", data)
+ Log.d(TAG, "Share successful!")
+ Toast.makeText(
+ applicationContext,
+ R.string.share_success,
+ Toast.LENGTH_SHORT
+ ).show()
+ } catch (e: Exception) {
+ Log.e(TAG, "Issue sharing with Home Assistant", e)
+ Toast.makeText(
+ applicationContext,
+ R.string.share_failed,
+ Toast.LENGTH_LONG
+ ).show()
+ }
+ }
+ finish()
+ }
+}
diff --git a/app/src/main/java/io/homeassistant/companion/android/share/ShareComponent.kt b/app/src/main/java/io/homeassistant/companion/android/share/ShareComponent.kt
new file mode 100644
index 000000000..1e8f4e546
--- /dev/null
+++ b/app/src/main/java/io/homeassistant/companion/android/share/ShareComponent.kt
@@ -0,0 +1,10 @@
+package io.homeassistant.companion.android.share
+
+import dagger.Component
+import io.homeassistant.companion.android.common.dagger.AppComponent
+
+@Component(dependencies = [AppComponent::class])
+interface ShareComponent {
+
+ fun inject(activity: ShareActivity)
+}
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index c1c1e2cc9..fb08a7e5b 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -297,4 +297,6 @@ like to connect to:
Service
30
Widget text size:
+ Shared with Home Assistant
+ Sharing with Home Assistant Failed!