【问题标题】:Android App: Handling links opened elsewhere in Android with 'Open With...'Android 应用程序:使用“打开方式...”处理在 Android 其他地方打开的链接
【发布时间】:2013-03-25 13:01:20
【问题描述】:

我对 Android 应用程序开发非常陌生,但我有一个包含应用程序的网站 - 该应用程序只是使用 webview 来加载网站。到目前为止非常简单。

由于桌面用户将使用网站本身,并且他们希望分享他们在网站上遇到的链接,因此移动用户可能会在 Facebook 上看到他们想要访问的链接,然后打开网站在浏览器中,而不是在应用程序中加载该 URL,这显然会分散/混淆用户(该网站有一个登录系统,对于初学者来说,他们需要从 android 浏览器再次登录)。

有没有什么方法可以在 Android 中监听到网站的链接并使用应用程序的 webview 打开这些链接,而不是在浏览器中?我知道 Facebook 有打开应用程序的 fb:// 链接。

不过,问题更加复杂。实际上,为了防止内部链接启动外部 android 浏览器,我有一个过滤器,效果如下:

public boolean shouldOverrideUrlLoading(WebView view, String url) {
     if (url.contains("root_address_of_site/page/")) {

         return false;
     } else {
         view.getContext().startActivity(
                  new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
     }
        return true;

 }

在应用程序中,您可以通过基本 url 分享到 Facebook、Twitter 和日历的链接,因此到 Twitter 的链接可能是https://twitter.com/intent/tweet?original_referer=root_address_of_site/page/&text=page_name&tw_p=tweetbutton&url=root_address_of_site/page/。当然,这只会被过滤器捕获,因为意图 URL“包含”“root_address_of_site/page/”。我想知道是否有办法更改过滤器,使其“以”开头,而不是“url.contains”?这意味着 twitter/facebook 链接仍将在外部打开,但指向网站本身的链接仍将在应用程序内打开,无论如何。

我希望这是有道理的——这很难描述。感谢您对此的任何帮助!

【问题讨论】:

    标签: android webview hyperlink


    【解决方案1】:

    这里是documentation about how to handle your own links in app

    因此,您需要将您的一项活动注册为所需 uri 模式的处理程序:

    <activity android:name="OpenCustomUriActivity">
         <intent-filter>
              <data
                  android:scheme="http"
                  android:host="yoursite.com"
                  android:pathPrefix="pathOnYourSiteIfNeeded"
                  />
          </intent-filter>
    </activity>
    

    然后在活动中处理意图并做你需要的。

    【讨论】:

      猜你喜欢
      • 2015-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多