从youtube分享链接时,Android应用程序不可见

问题描述 投票:2回答:1

问题如下:

我阅读了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 xamarin xamarin.android
1个回答
3
投票

清单中你在哪里放置了意图过滤器?在原生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文件时,您将看不到这些生成的条目。

© www.soinside.com 2019 - 2024. All rights reserved.