diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 8c03d7a9b..0e59a16a2 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -55,44 +55,45 @@ - + - + - + - + - + - + @@ -100,10 +101,31 @@ + + + + + + + + + + + + + + + + + + viewUrl(url, PostLookupFallbackBehavior.OPEN_IN_BROWSER) + } + } + } + companion object { private const val TAG = "MainActivity" // logging tag private const val DRAWER_ITEM_ADD_ACCOUNT: Long = -13 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 ed38db1d1..672c9fb3f 100644 --- a/app/src/main/java/com/keylesspalace/tusky/util/LinkHelper.kt +++ b/app/src/main/java/com/keylesspalace/tusky/util/LinkHelper.kt @@ -313,6 +313,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 a78ad7ad2..0e439953c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -862,4 +862,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 + +