0

我对 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 链接仍将在外部打开,但指向网站本身的链接仍将在应用程序内打开,无论如何。

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

4

1 回答 1

0

这是有关如何在应用程序中处理您自己的链接的文档

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

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

然后只需处理活动中的意图并做您需要的事情。

于 2013-03-25T13:17:40.653 回答