【问题标题】:application is not intercepting url应用程序没有拦截 url
【发布时间】:2014-05-03 22:40:32
【问题描述】:

我试图在 android 上拦截我自己的应用程序的 URL,以便用户可以在应用程序中而不是在浏览器中打开 URL。 (我还没有浏览器支持)。

这就是我正在做的事情

<activity android:name=".ui.activity.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>
        <action android:name="android.intent.action.PICK_ACTIVITY" />
        <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" />
        <data android:host="myapp.com" />
        <data android:pathPattern=".*"/>
    </intent-filter>
</activity>

出于某种原因,无论何时我打开myapp.com,它仍然会在浏览器中打开,而我没有选择在我的应用程序中打开 URL。我正在运行 API 16 的模拟器上尝试此操作。我已经关闭了几次模拟器并再次启动它,但仍然是相同的行为。

为了避免我的个人应用程序的 URL 出现任何错误。我什至尝试过:

         <data android:host="goo.gl" android:scheme="http" />
         <data android:host="goo.gl" android:scheme="https" />

该应用确实拦截了上述网址,但只是第一次。如果我在显示的选项中单击“仅一次”,则在重新启动模拟器之前我不会再获得该选项。

有人经历过吗?我可能做错了什么?

【问题讨论】:

  • 删除android:pathPattern,因为您似乎没有使用它,看看是否有帮助。

标签: android android-intent


【解决方案1】:

这个答案帮助了我:link to question

如果您将包名称添加到 Intent 中,它将默认打开您的应用

【讨论】:

  • 按照该 URL (fokkezb.nl/2013/09/20/url-schemes-for-ios-and-android-2) 上的链接,我遵循了 HTTP 方案的建议(页面底部)。我看不出那个 sn-p 和我在做什么有什么不同。
  • 我已经放弃了 HTTP 方案,现在我正在创建自己的方案。这是由我网站中的 JS 转发的。但是,我的应用程序打开后如何在我的应用程序中获取 URL?我在这里问了另一个问题:stackoverflow.com/questions/23447985/…
  • 当您点击 js 网站中的链接时,您的链接应该是 intent://your.scheme/someotherstuff;package=your.package 并且如果安装了您的应用程序,这将使手机打开您的应用程序,或者如果不是就去google play
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-27
  • 2017-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多