点击网页链接实现跳转到其他应用界面的功能

本文介绍如何在Android应用中配置接收特定URL意图的方法。通过在AndroidManifest.xml中定义intent-filter,可以使得应用能够响应特定的HTTP链接。文章还展示了如何在Activity中解析这些链接并获取其中的参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目标Activity需要在AndroidManifest.xml中添加intent-filter,并在其中添加action、category和data。如:

<activity
    android:name=".MainActivity"
    android:label="@string/app_name" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    <intent-filter>
        <action android:name="android.intent.action.VIEW"/>
        <category android:name="android.intent.category.DEFAULT"/>
        <category android:name="android.intent.category.BROWSABLE"/>
        <data android:scheme="http" android:host="baidu" android:port="8080" android:pathPrefix="/news"/>
    </intent-filter>
</activity>

然后在目标Activity中的onCreate方法中实现参数的接收:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    
    Intent intent = getIntent();
    String action = intent.getAction();
    if (Intent.ACTION_VIEW.equals(action)) {
        // 网页链接如:<a href="http://baidu:8080/news/user=zhangsan&id=12345">去看百度新闻</a>
        // 或者浏览器中直接输入URL也可跳转
        
        String scheme = intent.getScheme();
        System.out.println("scheme : " + scheme);
        String dataString = intent.getDataString();
        System.out.println("dataString : " + dataString);
        Uri uri = intent.getData();
        if (uri != null) {
            // 完整URL信息
            String url = uri.toString();
            // scheme部分
            String scheme2 = uri.getScheme();
            // host部分
            String host = uri.getHost();
            // port部分
            int port = uri.getPort();
            // 访问路径
            String path = uri.getPath();
            // 编码路径
            String encodedPath = uri.getEncodedPath();
            // query部分
            String query = uri.getQuery();
            // 获取参数值
            String user = uri.getQueryParameter("user");
            String id = uri.getQueryParameter("id");
            
            System.out.println("url : " + url + " , scheme : " + scheme2 + " , host : " + host
                    + " , port : " + port + " , path : " + path + " , encodedPath : " + encodedPath
                    + " , query : " + query + " , user : " + user + " , id : " + id);
        }
    }
}

另外,可以用下面命令进行验证:

adb shell am start -W -a android.intent.action.VIEW -d "http://baidu:8080/news/user=zhangsan&id=12345"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值