问题如下:
我阅读了android文档,据我在其他主题中发现,YouTube上的共享链接带有“text / plain”标签。此外,我发现在SO中发布了不同的问题,但我的应用仍然无法在YouTube共享中看到。
我在清单中使用以下过滤器
<intent-filter>
<action android:name="android.intent.action.SEND"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:mimeType="*/*"/>
</intent-filter>
在共享列表中看不到我的应用程序的原因是什么?
清单中你在哪里放置了意图过滤器?在原生Android中,它会出现在清单中的<activity>
元素中,但是在Xamarin.Android中,活动不是直接在清单上声明,而是在C#属性中声明。这是因为Xamarin.Android创建了在活动名称之前添加哈希的包装器,因此您需要使用活动类上的属性声明intent过滤器,而不是在清单中,因为您不知道实际的最终编译活动名称将是什么是。更多信息:https://docs.microsoft.com/en-us/xamarin/android/platform/android-manifest
在模板Xamarin.Android应用程序中,您将看到定义Label的[Activity(...)]
属性,活动是否为主启动程序等。在编译时,这将生成必要的Android Manifest <activity>
元素。您也可以使用[IntentFilter(...)]
属性以这种方式添加intent过滤器,因此请尝试在要处理intent的Activity类上面添加以下内容:
[IntentFilter (new[] { Intent.ActionSend }, Categories = new[] {Intent.CategoryDefault }, DataMimeType = "text/plain")]
在上下文中:
[Activity(Label = "App1", MainLauncher = true, Icon = "@mipmap/icon")]
[IntentFilter (new[] { Intent.ActionSend }, Categories = new[] {Intent.CategoryDefault }, DataMimeType = "text/plain")]
public class MainActivity : Activity
{
...
}
同样,在编译时,上面将生成Android Manifest中的<intent-filter>
元素。生成的清单将位于项目的obj
文件夹中,当您打开应用程序项目本身的AndroidManifest.xml文件时,您将看不到这些生成的条目。