diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 54fbf8d23..d5ce7ffae 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -56,44 +56,45 @@
-
+
-
+
-
+
-
+
-
+
-
+
@@ -101,10 +102,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ viewUrl(url, PostLookupFallbackBehavior.OPEN_IN_BROWSER)
+ }
+ }
+ }
+
companion object {
const val OPEN_WITH_EXPLODE_ANIMATION = "explode"
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/view/ViewLinkActivity.kt b/app/src/main/java/com/keylesspalace/tusky/components/view/ViewLinkActivity.kt
new file mode 100644
index 000000000..bce0a9a04
--- /dev/null
+++ b/app/src/main/java/com/keylesspalace/tusky/components/view/ViewLinkActivity.kt
@@ -0,0 +1,25 @@
+package com.keylesspalace.tusky.components.view
+
+import android.content.Intent
+import android.net.Uri
+import android.os.Bundle
+import com.keylesspalace.tusky.BaseActivity
+import com.keylesspalace.tusky.MainActivity
+import com.keylesspalace.tusky.di.Injectable
+
+class ViewLinkActivity : BaseActivity(), Injectable {
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+
+ if (intent?.action == Intent.ACTION_SEND) {
+ val link = intent.getStringExtra(Intent.EXTRA_TEXT)
+
+ val launchIntent = Intent(this, MainActivity::class.java)
+ launchIntent.action = "dev.zwander.mastodonredirect.intent.action.OPEN_FEDI_LINK"
+ launchIntent.data = link?.let { Uri.parse(it) }
+
+ startActivity(launchIntent)
+ finish()
+ }
+ }
+}
diff --git a/app/src/main/java/com/keylesspalace/tusky/di/ActivitiesModule.kt b/app/src/main/java/com/keylesspalace/tusky/di/ActivitiesModule.kt
index a8fe4b9b6..23889222d 100644
--- a/app/src/main/java/com/keylesspalace/tusky/di/ActivitiesModule.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/di/ActivitiesModule.kt
@@ -41,6 +41,7 @@ import com.keylesspalace.tusky.components.report.ReportActivity
import com.keylesspalace.tusky.components.scheduled.ScheduledStatusActivity
import com.keylesspalace.tusky.components.search.SearchActivity
import com.keylesspalace.tusky.components.trending.TrendingActivity
+import com.keylesspalace.tusky.components.view.ViewLinkActivity
import com.keylesspalace.tusky.components.viewthread.ViewThreadActivity
import dagger.Module
import dagger.android.ContributesAndroidInjector
@@ -132,4 +133,7 @@ abstract class ActivitiesModule {
@ContributesAndroidInjector
abstract fun contributesEditFilterActivity(): EditFilterActivity
+
+ @ContributesAndroidInjector
+ abstract fun contributesViewLinkActivity(): ViewLinkActivity
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/util/LinkHelper.kt b/app/src/main/java/com/keylesspalace/tusky/util/LinkHelper.kt
index 7770d54dc..75153df52 100644
--- a/app/src/main/java/com/keylesspalace/tusky/util/LinkHelper.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/util/LinkHelper.kt
@@ -312,6 +312,10 @@ fun Context.openLink(url: String) {
*/
private fun openLinkInBrowser(uri: Uri?, context: Context) {
val intent = Intent(Intent.ACTION_VIEW, uri)
+
+ // Makes sure the Intent opens in the browser instead of something like Mastodon Redirect.
+ intent.selector = Intent(Intent.ACTION_VIEW, Uri.parse("https://"))
+
try {
context.startActivity(intent)
} catch (e: ActivityNotFoundException) {
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 895288197..54fb58bf5 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -851,4 +851,6 @@
Members of the list
Any followed user
Show replies to
+
+ Open Link
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 5115cb15d..a683ad68c 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -185,4 +185,17 @@
- 20dp
- 20dp
+
+