首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >截取浏览器中的链接以打开我的Android应用程序

截取浏览器中的链接以打开我的Android应用程序
EN

Stack Overflow用户
提问于 2009-10-23 03:53:20
回答 3查看 63.3K关注 0票数 109

我希望能够在用户点击给定模式的URL时提示我的应用程序打开链接,而不是允许浏览器打开它。这可能是当用户在浏览器中的网页上,或者在电子邮件客户端中,或者在新创建的应用程序的WebView中时。

例如,在手机的任何地方点击YouTube链接,你就有机会打开YouTube应用程序。

我如何在我自己的应用程序中实现这一点?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-10-23 04:09:38

使用类别为android.intent.category.BROWSABLE的android.intent.action.VIEW。

来自罗曼·盖伊的Photostream应用程序的AndroidManifest.xml

代码语言:javascript
复制
    <activity
        android:name=".PhotostreamActivity"
        android:label="@string/application_name">

        <!-- ... -->            

        <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="flickr.com"
                  android:pathPrefix="/photos/" />
            <data android:scheme="http"
                  android:host="www.flickr.com"
                  android:pathPrefix="/photos/" />
        </intent-filter>
    </activity>

进入activity之后,您需要查找操作,然后对收到的URL执行一些操作。Intent.getData()方法为您提供一个Uri。

代码语言:javascript
复制
    final Intent intent = getIntent();
    final String action = intent.getAction();

    if (Intent.ACTION_VIEW.equals(action)) {
        final List<String> segments = intent.getData().getPathSegments();
        if (segments.size() > 1) {
            mUsername = segments.get(1);
        }
    }

然而,应该注意的是,这个应用程序有点过时了(1.2),所以你可能会发现有更好的方法来实现这一点。

票数 143
EN

Stack Overflow用户

发布于 2016-04-09 14:12:11

有一些库可以自动解析url中的参数。

比如

https://github.com/airbnb/DeepLinkDispatch

&&

https://github.com/mzule/ActivityRouter

后一篇是我写的。它可以将参数解析为给定的类型,而不总是字符串。

示例

代码语言:javascript
复制
@Router(value = "main/:id" intExtra = "id")
...
int id = getIntent().getInt("id", 0);
票数 2
EN

Stack Overflow用户

发布于 2010-01-16 04:24:54

代码语言:javascript
复制
private class MyWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        setUrlparams(url);

        if (url.indexOf("pattern") != -1) {
            // do something
            return false;
        } else {
            view.loadUrl(url);
        }

        return true;
    }

}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1609573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档