gpt4 book ai didi

android - Android中的Youtube使用哪种 Intent 过滤器方案

转载 作者:行者123 更新时间:2023-12-03 05:31:13 25 4
gpt4 key购买 nike

我想为Youtube应用中的共享专门注册一个意图过滤器。

到目前为止,我已经能够成功地从Youtube收到意图。问题是我的意图申报者不够具体。我的应用程序显示为可用于其他应用程序中的其他共享功能(不仅适用于YouTube)。

这就是我现在正在使用的:

<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>

我已经审查了几个问题(大多数问题都类似于 this one),问题在于这些类型的答案中存在错误:
<data android:host="www.youtube.com" ... />

根据 data documentation,最提供 scheme以便 host有效。因此,在这些答案中,仅添加主机不会使 intent-filter专用于Youtube,因为没有 scheme,因此 host被忽略。

所以我一直在尝试通过启动Activity时使用 intent的可用方法来解决这个问题:
    Intent intent = getIntent();

Bundle bundle = intent.getExtras();
for (String key : bundle.keySet()) {
Log.d("KEY", key);
}

//The above loop will log
//... D/KEY: android.intent.extra.SUBJECT
//... D/KEY: android.intent.extra.TEXT

//This is are the same keys than above, but using the available constants
String subject = getIntent().getStringExtra(Intent.EXTRA_SUBJECT);
String text = getIntent().getStringExtra(Intent.EXTRA_TEXT);

//The subject is the video title
Log.d("SUBJECT", subject);

//The text is the video url, example: https://youtu.be/p6qX_lg4wTc
Log.d("TEXT", text);

//Action is consistent with the intent-filter android.intent.action.SEND
Log.d("ACTION", intent.getAction());

//This is consistent with the intent-filter data mime type text/plain
Log.d("TYPE", intent.getType());

/*
This is the problem.
The scheme is null (that is why I'm using String value of).
*/
Log.d("scheme", String.valueOf(intent.getScheme()));

因此,当检查了意图中的可用信息时,似乎一切都按顺序 ,而不是方案。因此,根据得到的结果,我做了一些盲目的尝试来弄清楚:
<data android:scheme="http" android:mimeType="text/plain"/>

//I'm adding youtu.be here because is the url format in the text extra
<data android:scheme="http" android:host="youtu.be" android:mimeType="text/plain"/>

无法添加 httphttps,这会使应用程序在选择器中不再可用。这意味着添加 host的其他尝试均无效。

Doe的所有人都知道如何专门为YouTube分享创建intent-filter吗?

PS:我知道我可以验证该URL以查看它是否与Youtube URL匹配,但是让我的应用程序在每个与 SEND匹配的选择器中似乎都不友好

最佳答案

tldr:您不能专门为Youtube应用制作intent-filter,共享视频的意图没有任何限制。

因此,我对此非常着迷,唯一的发现方法似乎是检查Youtube应用程序代码。我找到了apk here,然后用this反编译。我想我在this file中找到了代码(文本错误似乎证实了我的发现)。

因此,如果我的推论是正确的,那么发生的事情是Youtube应用程序制作一个没有intentscheme或没有其他使其具体化。它仅使用SEND

关于android - Android中的Youtube使用哪种 Intent 过滤器方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47147721/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com