ブラウザの共有からAndroidアプリを開く
実装
ブラウザアプリの共有機能で渡されたURLを受け取るためのShareActivity
を実装します。
ShareActivity.kt
import android.content.Intent
import android.os.Bundle
import androidx.activity.ComponentActivity
import org.koin.android.ext.android.inject
import org.koin.core.component.KoinComponent
class ShareActivity : ComponentActivity(), KoinComponent {
private val store: AppStore by inject()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val intent = intent
if (intent.action == Intent.ACTION_SEND) {
if (intent.type == "text/plain") {
intent.getStringExtra(Intent.EXTRA_TEXT)?.let { sharedText ->
if (sharedText.startsWith("http")) {
// メインのアクティビティを起動する
val newIntent = Intent(
this,
AppActivity::class.java
)
startActivity(newIntent)
// sharedTextにURLが入っているので、そのURLを開く処理を実装する
// 以下は私のアプリの独自メソッドなので、適当に書き換えてください
store.dispatch(MainAction.GoToWebViewScreen(sharedText))
}
}
}
}
// ShareActivityを閉じる
finish()
}
}
AndroidManifestにShareActivity
を追加
AndroidManifest.xml
<activity
android:name=".ShareActivity"
android:configChanges="orientation|screenSize|screenLayout|keyboardHidden"
android:exported="true"
android:launchMode="singleInstance"
android:windowSoftInputMode="adjustPan">
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/*" />
</intent-filter>
</activity>
参考
- iOS 版の実装はこちら