问题如下:
我阅读了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>
在共享列表中看不到我的应用的原因是什么?
答案 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文件时,您将不会看到这些生成的条目。