如何在Android中通过浏览器启动一个活动?

4

我该如何从安卓浏览器中启动我的活动?

我有一个链接,比如http://a.b.com。当用户在安卓浏览器中输入该URL时,我需要打开活动。我在我的安卓清单文件中添加了以下意图过滤器:

<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
    <data android:scheme="http" android:host="a.b.com"/>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT"/>  
    <category android:name="android.intent.category.BROWSABLE"/>
</intent-filter>

你的<intent-filter>是否在<activity android:name="MyActivity">内部? - Aleadam
我想知道如何使用android:scheme="http"启动一个活动,之前尝试过但没有成功!:( - Jorgesys
当我尝试这个时,我发现浏览器仍然在视图堆栈中,我该如何将其从视图堆栈中移除? - ahmed Shoeib
2个回答

3

我已经在互联网上搜索答案,每个人都说你只需要在清单中提供意图过滤器就可以了。但是尽管我已经提供了它,我仍然没有得到结果。当我在浏览器中输入URL时,它不会启动我的应用程序... - althaf_tvm
我也是。我使用的代码和你完全一样,但它不起作用。我也阅读了多篇文章、帖子和线程,它们都说上面的代码是我们需要的。你找到答案了吗? - mrd

0

这个示例可以从Android浏览器启动我的活动并显示来自URL的前2个GET参数

package com.example.openapp;

import java.util.List;

import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.widget.TextView;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        TextView txt1 = (TextView) findViewById(R.id.textView1);
        TextView txt2 = (TextView) findViewById(R.id.textView2);
        try{
            Uri data = getIntent().getData();
            if(data != null){
                String scheme = data.getScheme(); 
                String host = data.getHost();
                List<String> params = data.getPathSegments();
                String first = params.get(0); 
                String second = params.get(1);
                txt1.setText(first);
                txt2.setText(second);
            }
        } catch (Exception e){
        }       
    }
}

您需要在清单文件中添加以下内容,并将 Android 主机替换为您的主机:

     <activity
        android:name="com.example.openapp.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>
            <data android:scheme="http" android:host="example.com"/>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT"/>
            <category android:name="android.intent.category.BROWSABLE"/>
        </intent-filter>

    </activity>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接