Android url架构打开应用程序

时间:2015-07-27 03:58:48

标签: android

我想在用户输入网址时打开该应用程序。我看到了这个应用程序。例如,如果有人在浏览器中输入此URL,则会打开一个对话框,要求用户打开应用程序或浏览器。

这是我的代码,但它不起作用:

清单:

<activity
        android:name="ir.mywebsite.goblin.FistActiivty"
        android:label="@string/app_name" >
        <intent-filter>
            <data android:scheme="http" android:host="mywebsite.ir"/>
            <action android:name="android.intent.action.VIEW" />

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

这是我在浏览器中输入的网址,但没有任何反应。

http://mywebsite.ir/p-120

120是我想在我的应用程序中获取的ID并显示数据,但首先我需要在打开url时打开我的应用程序。

我该怎么办?

谢谢

1 个答案:

答案 0 :(得分:0)

我的建议是使用像mywebsite:// p / 120

这样的网址方案

为了处理这个方案,你应该在Manifest中描述的主要活动中添加一个intent过滤器,例如:

 <!-- Activities in your Manifest -->
    <activity android:name=".activities.YourMainActivity">

        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>

        <!-- url scheme -->
        <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="mywebsite" />
        </intent-filter>
    </activity>

然后您可以像活动参数一样获取活动中的网址。下面是一个示例,您可以在活动的onStart()方法中添加:

 if (getIntent().getExtras() != null) {
                        Uri data = getIntent().getData();
                        if (data != null) {
                            String scheme = data.getScheme(); // "mywebsite://"
                            if (!TextUtils.isEmpty(scheme) && scheme.equals("mywebsite")) {
                                String type = data.getHost(); // p
                                List<String> params = data.getPathSegments();
                                if (!params.isEmpty()) {
                                    String id = params.get(0); // "120"
                                   // DO YOUR STUFF WITH IT
                            }
                        }
}

希望它能派上用场!

干杯