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

时间:2019-01-07 20:02:16

标签: android xamarin xamarin.android

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

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

myApp \ Resources \ drawable \ Icon.png

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

enter image description here

问题:

它显示如下。

enter image description here

下面是代码。该代码对于以前的版本似乎正常工作,可以正确显示它。

from django.apps import apps
from django.contrib.auth.management import _get_all_permissions
from django.contrib.auth.models import Permission
from django.core.management.base import BaseCommand


class Command(BaseCommand):
    def handle(self, *args, **options):
        builtins = []
        for klass in apps.get_models():
            for perm in _get_all_permissions(klass._meta):
                builtins.append(perm[0])
        builtins = set(builtins)

        permissions = set(Permission.objects.all().values_list('codename', flat=True))
        to_remove = permissions - builtins
        res = Permission.objects.filter(codename__in=to_remove).delete()
        self.stdout.write('Deleted records: ' + str(res))

环境:

 public class MyServiceConnection : Java.Lang.Object, IServiceConnection
    {
        private string _appName;

        public MyServiceConnection(string appName)
        {
            _appName = appName;
        }

        public void OnServiceConnected(ComponentName name, IBinder service)
        {
 var intent = new Intent(Application.Context, typeof(ManifestActivity));
            intent.AddFlags(ActivityFlags.ClearTop);
            var pendingIntent = PendingIntent.GetActivity(Application.Context, 0, intent, PendingIntentFlags.UpdateCurrent);

            var notificationBuilder = new NotificationCompat.Builder(Application.Context)

                .SetSmallIcon(Resource.Drawable.Icon)
                .SetContentTitle(_appName)
                .SetAutoCancel(true)
                .SetContentIntent(pendingIntent);

            var notificationManager = NotificationManager.FromContext(Application.Context);
            var notification = notificationBuilder.Build();
            notificationManager.Notify(1, notification);

            var serviceBinder = service as MyService.Binder;
            serviceBinder.StartForeground(1, notification);
    }

    public void OnServiceDisconnected(ComponentName name)
        {
        }
}

更新

正如我提到的,使用相同的代码和相同的png文件,并且现在可以在单独的apk上运行。为第二个分支创建代码后,问题就会在第二个分支上发生。

更新2

我通过更改以下内容进行了修复

项目属性-> Android清单->将Android Versin定位为“使用SDK版本进行编译”

这将导致以下提示:

android:minSdkVersion =“ 15”

“使用SDK版本使用编译”是什么意思? 安装在Lollipop上的目标版本是什么?

1 个答案:

答案 0 :(得分:1)

由于Google对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);
 }

您可以参考:Notification bar icon turns white in Android 5 Lollipop