You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

浏览器访问特定URL无法唤起指定Android Activity的问题求助

Android浏览器唤起指定Activity问题

我用Kotlin开发了一个Demo应用,用于测试Activity与浏览器的交互:点击按钮打开浏览器访问https://www.bbc.com,当用户在浏览器导航至https://www.bbc.com/news页面时,希望能唤起应用内的指定Activity。

我不确定该场景是否可行,或是对intent-filter和android.intent.category.BROWSABLE的作用存在误解。以下是我的实现细节:

AndroidManifest配置

<activity
    android:name=".MainActivity"
    android:exported="true"
    android:theme="@style/Theme.BrowserOpener">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
<activity
    android:name=".FirstActivity"
    android:theme="@style/Theme.BrowserOpener" />
<activity
    android:name=".SecondActivity"
    android:exported="true"
    android:theme="@style/Theme.BrowserOpener">
    <intent-filter android:autoVerify="true">
        <action android:name="android.intent.action.VIEW" />

        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />

        <data android:scheme="https" />
        <data android:host="www.bbc.com" />
        <data android:path="/news" />
    </intent-filter>
</activity>

我定义了3个Activity:

  • MainActivity:仅包含跳转至FirstActivity的按钮
  • FirstActivity:仅包含打开浏览器访问https://www.bbc.com的按钮
  • SecondActivity:预期在用户访问https://www.bbc.com/news时自动唤起

FirstActivity核心代码

class FirstActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            BrowserOpenerTheme {
                Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding ->
                    Opener(modifier = Modifier.padding(innerPadding))
                }
            }
        }
    }
}

@Composable
fun Opener(modifier: Modifier = Modifier) {
    val context = LocalContext.current

    Column {
        Text(
            text = "FirstActivity",
            modifier = modifier
        )
        Button(
            onClick = {
                val browseIntent = Intent(Intent.ACTION_VIEW, Uri.parse("https://www.bbc.com/"))
                context.startActivity(browseIntent)
            },
            enabled = true,
        ) {
            Text("Browser")
        }
    }
}

SecondActivity核心代码

class SecondActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        val data = intent.data
        Log.d("SecondActivity", "URI: $data")

        setContent {
            BrowserOpenerTheme {
                Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding ->
                    Final(modifier = Modifier.padding(innerPadding))
                }
            }
        }
    }
}

@Composable
fun Final(modifier: Modifier = Modifier) {
    Column {
        Text(
            text = "SecondActivity",
            modifier = modifier
        )
    }
}

目前我可以正常跳转至FirstActivity、打开浏览器并进入新闻页面,但无法唤起SecondActivity。我使用Google Pixel 6A真机,通过Android Studio运行应用。

内容的提问来源于stack exchange,提问作者Stefano Cappa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 05:23:12