Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
棒棒糖上的Xamarin Android无法正确显示通知图标_Android_Xamarin_Xamarin.android - Fatal编程技术网

棒棒糖上的Xamarin Android无法正确显示通知图标

棒棒糖上的Xamarin Android无法正确显示通知图标,android,xamarin,xamarin.android,Android,Xamarin,Xamarin.android,我在设置通知图像以正确显示时遇到问题 下面是原始图像,带有文件路径: myApp\Resources\drawable\Icon.png 尺寸:72x72像素,32位深度 问题: 它显示如下 下面是代码。对于正确显示代码的早期版本,代码似乎工作正常 公共类MyServiceConnection:Java.Lang.Object,IServiconnection { 私有字符串_appName; 公共MyServiceConnection(字符串appName) { _appName=appN

我在设置通知图像以正确显示时遇到问题

下面是原始图像,带有文件路径:

myApp\Resources\drawable\Icon.png

尺寸:72x72像素,32位深度

问题:

它显示如下

下面是代码。对于正确显示代码的早期版本,代码似乎工作正常

公共类MyServiceConnection:Java.Lang.Object,IServiconnection
{
私有字符串_appName;
公共MyServiceConnection(字符串appName)
{
_appName=appName;
}
服务连接上的公共无效(组件名称,IBinder服务)
{
var intent=新意图(Application.Context,typeof(ManifestActivity));
intent.AddFlags(ActivityFlags.ClearTop);
var pendingIntent=pendingIntent.GetActivity(Application.Context,0,intent,PendingIntentFlags.UpdateCurrent);
var notificationBuilder=newnotificationcompat.Builder(Application.Context)
.SetSmallIcon(Resource.Drawable.Icon)
.SetContentTitle(_appName)
.SetAutoCancel(真)
.SetContentIntent(挂起内容);
var notificationManager=notificationManager.FromContext(Application.Context);
var notification=notificationBuilder.Build();
通知经理。通知(1,通知);
var serviceBinder=作为MyService.Binder的服务;
serviceBinder.StartForeground(1,通知);
}
ServiceDisconnected上的公共无效(组件名称)
{
}
}
环境:

android:minSdkVersion=“15”android:targetSdkVersion=“27”
更新

正如我所提到的,使用了相同的代码和相同的png文件,现在在一个单独的apk上工作。一旦为第二个分支创建了代码,问题就发生在第二个分支上

更新2

我在下面换了衣服,把它修好了

Project Properties->Android清单->将目标Android版本设置为“使用SDK版本编译”

其结果如下:

android:minSdkVersion=“15” “使用SDK版本编译”是什么意思?
安装在棒棒糖上时使用的目标版本是什么?

因为谷歌对android5.0及以上版本(不包括5.0)进行了限制,以统一系统风格。之后,状态栏中的图标不能随意使用颜色丰富的图片。它只能以两种颜色显示,白色和透明

您可以通过两种方式完成:

1.通过降低targetSdkVersion方法显示彩色图标,但不支持降低targetSdkVersion方法。(不推荐)

2.分别设置setSmallIcon(制作另一个背景透明的白色图标)

 if(Android.OS.Build.VERSION.SdkInt> BuildVersionCodes.Lollipop){         
     // white icon with a transparent background
     notificationBuilder.SetSmallIcon(Resource.Drawable.ic_aphla_logo);
  } else {
     // icon image
     notificationBuilder.SetSmallIcon(Resource.Drawable.ic_logo);
 }

您可以参考以下内容:

是否在新分支上更新了编译/目标sdk版本?如果是这样的话,它是否低于API 21,现在是API 27?答案对您有帮助吗?对于大多数开发人员,我们不建议将目标Android版本设置为使用SDK编译版本。一般来说,目标Android版本应以最低安卓版本和目标框架为界限。也就是说:我已经测试并报告了最低Android版本,它与最低Android版本相同,您可以这样验证:项目属性->Android清单->目标Android版本“使用SDK版本编译”,然后在代码中:
var targetSdkVersion=ApplicationInfo.targetSdkVersion
,您可以打印
targetSdkVersion
您可以查看一下:我还将在棒棒糖和更高版本的if语句中添加它,您还可以调用
notificationBuilder.setColor()
将着色应用于白色图标。这仅适用于API 21(棒棒糖)及以上版本。请注意,它同时支持棒棒糖和Kitkat是的,您的代码确实同时支持这两种,但我所说的是
notificationBuilder.setColor()
方法。它可用于为白色图标着色。此方法仅适用于棒棒糖及以上,如文件所述。