从youtube共享链接时看不到Android应用

时间:2019-01-09 18:53:56

标签: android xamarin xamarin.android

问题如下:

我阅读了android文档,并在其他主题中发现,来自YouTube的共享链接带有标签“文本/纯文本”。另外,我在SO中发现了不同的问题,但我的应用仍然无法在YouTube分享中看到。

我在清单中使用了以下过滤器

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

在共享列表中看不到我的应用的原因是什么?

1 个答案:

答案 0 :(得分:3)

您将清单过滤器放在清单的什么位置?在本机Android中,它将进入清单中的<activity>元素,但在Xamarin中。Android活动不是直接在清单中声明,而是在C#属性中声明。这是因为Xamarin.Android创建的包装器在活动名称之前添加了哈希,因此您需要使用活动类(而不是清单)上的属性声明意图过滤器,因为您不知道最终的编译活动名称实际是什么。是。更多信息在这里: https://docs.microsoft.com/en-us/xamarin/android/platform/android-manifest

在Xamarin.Android模板应用中,您将看到一个[Activity(...)]属性,该属性定义Label,活动是否是主启动程序等。在编译时,这将生成必要的Android Manifest {{1 }}元素。您也可以使用<activity>属性以这种方式添加意图过滤器,因此请尝试在要处理意图的Activity类上方添加以下内容:

[IntentFilter(...)]

在上下文中:

[IntentFilter (new[] { Intent.ActionSend }, Categories = new[] {Intent.CategoryDefault }, DataMimeType = "text/plain")]

同样,在编译时,以上将在Android Manifest中生成[Activity(Label = "App1", MainLauncher = true, Icon = "@mipmap/icon")] [IntentFilter (new[] { Intent.ActionSend }, Categories = new[] {Intent.CategoryDefault }, DataMimeType = "text/plain")] public class MainActivity : Activity { ... } 元素。此生成的清单将位于项目的<intent-filter>文件夹中,当您打开应用程序项目本身中的AndroidManifest.xml文件时,您将不会看到这些生成的条目。