什么是intent-filter而不是仅在共享网址时在共享菜单中显示应用?

cot*_*aws 5 url android share intentfilter

我查看了intent-filter文档,但我无法弄清楚这个特定的intent-filter.

我希望使用ACTION_SEND,因为我只希望应用程序显示在其他应用程序的"共享"菜单中.如果意图的文本是网址,我只想在共享菜单中显示.例如,从Android浏览器的共享菜单中共享的内容.我不希望应用程序出现在共享菜单中,如果它只是文本而不是网址.

到目前为止我所拥有的是:

<intent-filter android:label="Label">
  <action android:name="android.intent.action.SEND" />
  <category android:name="android.intent.category.DEFAULT" />
  <data android:mimeType="text/*" />
</intent-filter>    
Run Code Online (Sandbox Code Playgroud)

但是,这将收到任何文本,而不仅仅是网址.

谢谢

Mar*_*rer 1

您可以通过编程方式创建IntentFilter对象,并且它们可以根据 URI 架构进行过滤...更多控制。

我认为子类化 IntentFilter 会给你更多的事件,但是他们在“匹配”上做了所有的变化,final所以你不能在子类中覆盖它们。呸!

尤里卡!

您可以指定数据“方案”而不是 mimetype。只需询问“http”和“https”(在单独的意图过滤器中?)。

<intent-filter>
  ...
  <data android:scheme="http"/>
</intent-filter>
Run Code Online (Sandbox Code Playgroud)

  • 感谢您的关注。问题是 URL 来自共享应用程序,作为额外的字符串。android:scheme 似乎不适用于额外内容,它似乎适用于传递给意图的数据。我认为这适用于像 ACTION_VIEW 这样的意图,但可能不适用于 ACTION_SEND? (3认同)