ブラウザの共有からAndroidアプリを開く

kyamada,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>

参考

© 品川アプリ.RSS