অ্যান্ড্রয়েড 5 ললিপপ-এ বিজ্ঞপ্তি বারের আইকনটি সাদা হয়ে যায়


207

আমার কাছে একটি অ্যাপ্লিকেশন রয়েছে যা কাস্টম বিজ্ঞপ্তিগুলি দেখায়। সমস্যাটি হ'ল অ্যান্ড্রয়েড 5 এ চলার সময় নোটিফিকেশন বারের ছোট আইকনটি সাদা দেখানো হয়। আমি এটা কিভাবে ঠিক করবো?


রাহুল শর্মা ও basiam একটি ভাল উত্তর এখানে আছে - stackoverflow.com/questions/30795431/...
Rivu চক্রবর্তী

অ্যান্ড্রয়েড in এ চলার সময় আমার সাথে এটি ঘটে not, নয়
জাইমে মন্টোয়া

অবশ্যই, অ্যান্ড্রয়েড 5+ এর সাথে এটি অবশ্যই অ্যান্ড্রয়েড and এবং in এর ক্ষেত্রে ঘটেছিল প্রশ্নটির সময় অ্যান্ড্রয়েড 5 এর সর্বশেষতম সংস্করণ ছিল এবং এই সমস্যাটির কারণ হিসাবে বৈশিষ্ট্যটি অ্যান্ড্রয়েড 5 এ প্রবর্তিত হয়েছিল
আলেজান্দ্রো ক্যাসানোভা

আমি মনে করি এপিআই লেভেল 21 (অ্যান্ড্রয়েড 5.0), এপিআই লেভেল 22 (অ্যান্ড্রয়েড 5.1), এপিআই লেভেল 23 (অ্যান্ড্রয়েড 6.0), ইত্যাদি বলা আরও সঠিক is ​​"অ্যান্ড্রয়েড 5" শব্দটি অস্পষ্ট কারণ আপনি Android 5.0 সম্পর্কে কথা বলতে পারেন বা অ্যানড্রয়েড 5.1, এবং যখন আমি বিজ্ঞপ্তিগুলি পরীক্ষা করি এবং যেভাবে API লেভেল 22 বনামে আইকনগুলি প্রদর্শিত হয় when এপিআই স্তর 23, আমি বুঝতে পারি যে তারা অন্যরকম আচরণ করে।
জাইমে মন্টোয়া

উত্তর:


269

গৃহীত উত্তর (সম্পূর্ণ) সঠিক নয়। অবশ্যই, এটি নোটিফিকেশন আইকনগুলিকে রঙিন করে দেখায়, তবে এটি একটি বড় ত্রুটি সহ করে - লক্ষ্য এসডিকে অ্যান্ড্রয়েড ললিপপের চেয়ে কমতে সেট করে!

প্রস্তাবিত হিসাবে, আপনি যদি আপনার টার্গেট এসডিকে ২০ তে সেট করে আপনার সাদা আইকন সমস্যাটি সমাধান করেন তবে আপনার অ্যাপটি অ্যান্ড্রয়েড ললিপপকে লক্ষ্য করবে না, যার অর্থ আপনি ললিপপ-নির্দিষ্ট বৈশিষ্ট্য ব্যবহার করতে পারবেন না।

Http://developer.android.com/design/style/iconography.html দেখুন এবং আপনি দেখতে পাবেন যে সাদা স্টাইলটি কীভাবে বিজ্ঞপ্তিগুলি অ্যান্ড্রয়েড ললিপপে প্রদর্শিত হবে।

ললিপপ-এ, গুগলও আপনাকে পরামর্শ দেয় যে আপনি এমন একটি রঙ ব্যবহার করুন যা (সাদা) বিজ্ঞপ্তি আইকনের পিছনে প্রদর্শিত হবে - https://developer.android.com/about/versions/android-5.0-changes.html

সুতরাং, আমি মনে করি যে আরও ভাল সমাধান হ'ল অ্যাপটিতে একটি সিলুয়েট আইকন যুক্ত করা এবং ডিভাইসটি অ্যান্ড্রয়েড ললিপপ চলমান থাকলে এটি ব্যবহার করা।

এই ক্ষেত্রে:

Notification notification = new Notification.Builder(context)
            .setAutoCancel(true)
            .setContentTitle("My notification")
            .setContentText("Look, white in Lollipop, else color!")
            .setSmallIcon(getNotificationIcon())
            .build();

    return notification;

এবং, getNotificationsIcon পদ্ধতিতে:

private int getNotificationIcon() {
    boolean useWhiteIcon = (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP);
    return useWhiteIcon ? R.drawable.icon_silhouette : R.drawable.ic_launcher;
}

34
আপনি কীভাবে সিলুয়েট তৈরি করবেন? আমি কোনও ফটোশপ দক্ষতা ছাড়াই বিকাশকারী এবং অনলাইন সরঞ্জামগুলি ব্যবহার করে ব্যাকগ্রাউন্ডকে স্বচ্ছ তৈরি করার পরেও সাদা আইকনগুলির ফলাফল।
চৈতন্য

6
@ চৈতন্য জিম্প ব্যবহার করুন :)
বাইটহ্যামস্টার

4
এই সমাধান কেন অ্যান্ড্রয়েড বিল্ড প্রক্রিয়াটি পুরোপুরি সঠিকভাবে সঠিক পিএনজি সংশোধন করে এবং এটি সংকুচিত করে এবং আলফা চ্যানেল অপসারণ করে এমন প্রশ্নের উত্তর দেয় না।
ফিলিপ

6
developer.android.com/design/style/iconography.html বিশালাকার করার material.google.com/style/icons.html এবং আমি টিপে ctrl+fএবং টাইপ করা notificationযে পেজটি কিছু খুঁজে পাচ্ছি না উপর ...
user25

4
কোড অ্যাপলে প্ল্যাটফর্মের সংস্করণ সংশোধনকারী থেকে অঙ্কনযোগ্য ফোল্ডারে - ড্রয়যোগ্য / অঙ্কনযোগ্য-
ভি

72

ব্যবহারকারী ড্যানিয়েল সাইদির সাথে সম্পূর্ণরূপে একমত। Colorযাতে NotificationIconআমি এই উত্তরটি লিখছি তাই করার জন্য ।

তার জন্য আপনাকে আইকনটি তৈরি করতে হবে Silhouetteএবং Transparentযেখানেই আপনি যুক্ত করতে চান সেখানে কিছু বিভাগ তৈরি করতে হবে Colors। অর্থাত,

এখানে চিত্র বর্ণনা লিখুন

ব্যবহার করে আপনি নিজের রঙ যুক্ত করতে পারেন

.setColor(your_color_resource_here)

দ্রষ্টব্য: setColorকেবলমাত্র এতে উপলব্ধ Lollipop, আপনাকে যাচাই করতে হবেOSVersion

if (android.os.Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
    Notification notification = new Notification.Builder(context)
    ...
} else {
    // Lollipop specific setColor method goes here.
    Notification notification = new Notification.Builder(context)
    ...
    notification.setColor(your_color)
    ...            
}

আপনি Lollipopলক্ষ্য হিসাবে ব্যবহার করে এটি অর্জন করতে পারেন SDK

গুগল বিকাশকারী কনসোল বিজ্ঞপ্তি গাইড লাইনগুলিতেNotificationIcon প্রদত্ত সম্পর্কিত সমস্ত নির্দেশনা ।

পছন্দসই বিজ্ঞপ্তি আইকন আকার 24x24dp

mdpi    @ 24.00dp   = 24.00px
hdpi    @ 24.00dp   = 36.00px
xhdpi   @ 24.00dp   = 48.00px

এবং আরও তথ্যের জন্য বিজ্ঞপ্তি আইকন আকারের জন্য এই লিঙ্কটি উল্লেখ করুন ।


4
এই সেট পটভূমির রঙ জন্য খুবই ভাল ধারণা notification.setColor (your_color_resource_here)
TejaDroid

1
সুতরাং আমি এটি চেষ্টা করেছি এবং আমি বিজ্ঞপ্তির শেডটি নীচে টেনে নেওয়ার সময় বিজ্ঞপ্তি আইকনটির রঙিন পটভূমি রয়েছে। তবে, ট্রেতে এটি এখনও একটি সাদা আইকন
স্টিলথ রাব্বি

1
এই সমাধানটি ঠিক আছে .. একটি বিজ্ঞপ্তি আইকন রয়েছে যা স্বচ্ছ ফিরে আছে..আর সিলুয়েট দ্বারা, আইকনটি কেবল কালো হওয়া উচিত নয়..এ আইকনটিতে রঙ থাকতে পারে; এটি ঠিক যে অ্যান্ড্রয়েড এল শো রঙটিকে সাদা হিসাবে রূপান্তর করবে ... এবং পূর্ববর্তী অ্যান্ড্রয়েড সংস্করণগুলি আইকনটি যেমন দেখাবে তেমন হবে
লক্ষ্যা

আইসি_ল্যাঞ্চার আইকনটি জরিমানা করে নীচে ললিপপের জন্য সেট কালার যুক্ত করছি তবে in.০ সাদা স্কোয়ার আইকন দেখায় দয়া করে আমাকে সহায়তা করুন
হর্ষ

আমি setColorকিটক্যাট (এপিআই 19) এবং আইসক্রিমস্যান্ডউইচ (এপিআই 15) পরীক্ষা করেছি , উভয় ক্ষেত্রেই রঙটি উপেক্ষা করেছে তবে ক্রাশ হয়নি । সুতরাং আমি ওএস সংস্করণ চেক করে নিরাপদে বাদ দিতে পারি?
মারিয়া

47

অ্যানড্রয়েডটি নোটিফিকেশন আইকনগুলি প্রদর্শনের জন্য এই কোডটি ব্যবহার করে:

// android_frameworks_base/packages/SystemUI/src/com/android/systemui/
//   statusbar/BaseStatusBar.java

if (entry.targetSdk >= Build.VERSION_CODES.LOLLIPOP) {
    entry.icon.setColorFilter(mContext.getResources().getColor(android.R.color.white));
} else {
    entry.icon.setColorFilter(null);
}

সুতরাং আপনাকে লক্ষ্য এসডিকে কোনও সংস্করণ সেট করতে হবে <21এবং আইকনগুলি রঙিন থাকবে। এটি একটি কুরুচিপূর্ণ কাজ কিন্তু এটি যা প্রত্যাশা করে তা করে। যাইহোক, আমি সত্যিই গুগলের নকশা নির্দেশিকা অনুসরণ করার পরামর্শ দিচ্ছি : "বিজ্ঞপ্তি আইকনগুলি অবশ্যই পুরোপুরি সাদা হতে হবে।"

আপনি এটি কীভাবে বাস্তবায়ন করতে পারেন তা এখানে:

আপনি যদি আপনার অ্যাপ্লিকেশনগুলি তৈরি করতে গ্রেডল / অ্যান্ড্রয়েড স্টুডিও ব্যবহার করেন তবে ব্যবহার করুন build.gradle:

defaultConfig {
    targetSdkVersion 20
}

অন্যথায় (গ্রহণ ইত্যাদি) AndroidManifest.xml:

<uses-sdk android:minSdkVersion="..." android:targetSdkVersion="20" />

কোন workaround আছে? বা আমি বা অন্য কোনও আইকন সঠিকভাবে দেখাতে কী করতে পারি?
আলেজান্দ্রো ক্যাসানোভা

অ্যান্ড্রয়েড সোর্স কোড পড়ার পরে আমি যেমন কার্যনির্বাহ পেয়েছি তেমন আমি আমার উত্তরটি সম্পাদনা করেছি।
বাইটহ্যামস্টার

4
আপনার সাহায্যের জন্য দুর্দান্ত ধন্যবাদ, তবে আপনি আমাকে কিছু "প্রসঙ্গ" সরবরাহ করুন a আমার এটা করার দরকার কোথায়? "এন্ট্রি" কি?
আলেজান্দ্রো ক্যাসানোভা

কোডটি এওএসপি থেকে নেওয়া হয়েছিল কেবলমাত্র আমি কীভাবে কার্যকারিতা পেয়েছি তা দেখানোর জন্য :) আমি কীভাবে এটি প্রয়োগ করব সে সম্পর্কে একটি ছোট ব্যাখ্যা যুক্ত করেছি।
বাইটহ্যামস্টার

এটি আসলে কাজ করে। কোনও অনুমান কেন গুগল এটি করেছে? এটি কি বাগ বা কোনও বৈশিষ্ট্য?
m02ph3u5

24

সাদা হওয়ার জন্য বিজ্ঞপ্তি আইকনগুলি এড়ানোর জন্য, তাদের জন্য "সিলুয়েট" আইকনগুলি ব্যবহার করুন, যেমন। সাদা অন স্বচ্ছ পটভূমি চিত্র। এগুলি তৈরি করতে আপনি ইরফানভিউ ব্যবহার করতে পারেন :

  • চিত্র চয়ন করুন, খুলুন IrfanView, পেইন্টিং সরঞ্জামগুলির জন্য F12 টিপুন, প্রয়োজনে পরিষ্কার ছবি (অযাচিত অংশগুলি সরিয়ে দিন, মসৃণ এবং পোলিশ করুন)
  • Image / Decrease Color Depth 2 এ (একটি কালো এবং সাদা ছবির জন্য)
  • Image / Negative (কালো ছবিতে একটি সাদা জন্য)
  • Image / Resize/Resample 144 x 144 (আকারের পদ্ধতিটি "পুনরায় আকার দিন" "পুনরায় নমুনা" ব্যবহার করুন, অন্যথায় ছবিতে পিক্সেলটিতে 24 রঙ বিট (24 বিপিপি) আবার বাড়ানো হয়েছে
  • File / Save as PNG, চেক Show option dialog, চেক Save Transparent Color, ক্লিক করুন Save, তারপরে স্বচ্ছ রঙ সেট করতে ইমেজের কালো রঙে ক্লিক করুন

অ্যান্ড্রয়েড কেবল অঙ্কনযোগ্য-এক্সএক্সএইচডিপি পিকচার রেজোলিউশন (144 x 144) ব্যবহার করছে বলে মনে হচ্ছে, সুতরাং আপনার ফলাফলটি ic_notification.pngফাইলটিতে অনুলিপি করুন \AndroidStudio\Projects\...\app\src\main\res\drawable-xxhdpi.setSmallIcon(R.drawable.ic_notification)আপনার কোড ব্যবহার করুন , বা getNotificationIcon()ড্যানিয়েল সাইদী উপরে প্রস্তাবিত হিসাবে ব্যবহার করুন ।

আপনি রোমান নুরিকের অ্যান্ড্রয়েড অ্যাসেট স্টুডিওও ব্যবহার করতে পারেন ।


আমি ফটোশপ ব্যবহার করে আমার আইকনটি রূপান্তরিত করার চেষ্টা করেছি কিন্তু ব্যর্থ হয়েছি, তবে ইরফ্যানভিউ অনুরাগী হয়ে আমি যখন তা দেখেছি তখনই এটি চেষ্টা করেছি এবং এটি আশ্চর্যরকমভাবে কাজ করেছিল। ধন্যবাদ!
ব্রুশ

15

অন্য বিকল্পটি হ'ল ললিপপ এবং উপরের জন্য বিভিন্ন গ্রাফিক সরবরাহ করার জন্য সংস্করণ-নির্দিষ্ট অঙ্কনযোগ্য (মাইপম্যাপ) ডিরেক্টরিগুলির সুবিধা নেওয়া।

আমার অ্যাপ্লিকেশনটিতে, "ভি 21" ডিরেক্টরিতে স্বচ্ছ পাঠ্যযুক্ত আইকন রয়েছে যখন অন্য ডিরেক্টরিগুলিতে অপ-স্বচ্ছ সংস্করণ থাকে (ললিপপের চেয়ে পুরানো Android এর সংস্করণগুলির জন্য) for

নথি ব্যবস্থা

যা দেখতে এই জাতীয় কিছু দেখা উচিত:

অ্যান্ড্রয়েড স্টুডিও

এইভাবে, আপনাকে কোডে সংস্করণ নম্বরগুলি পরীক্ষা করার দরকার নেই

PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent,
            PendingIntent.FLAG_ONE_SHOT);

Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
        .setSmallIcon(R.mipmap.ic_notification)
        .setContentTitle(title)
        .setContentText(message)
        .setAutoCancel(true)
        .setSound(defaultSoundUri)
            .setContentIntent(pendingIntent);

তেমনিভাবে, আপনি যদি "আইকন" বৈশিষ্ট্যটি ব্যবহার করেন তবে আপনি আপনার জিসিএম পেলোডে "আইসি_নোটিকেশন" (বা আপনি যা কল করতে পছন্দ করেন) তা উল্লেখ করতে পারেন।

https://developers.google.com/cloud-messaging/http-server-ref#notification-payload-support


3
এটি কাজ করে এবং সর্বাধিক অ্যান্ড্রয়েড-উপায় সমাধানের মতো দেখায়।
সের্গেই গ্যালিন

আপনি কি বলছেন যে অ্যান্ড্রয়েড যদি ফোল্ডারটি মিপম্যাপ -21 থেকে আইকনটি চয়ন করে তবে সংস্করণটি ললিপপ হয়, এবং ললিপপের চেয়ে কম হলে এটি অঙ্কনীয় থেকে বেছে নেবে?
লক্ষী

@ আইয়ান, ডিরেক্টরিগুলি অ্যাড্রয়েড সংস্করণ অনুসারে উত্সের জন্য ভাল তবে আপনি কীভাবে setColor(অতিরিক্ত কোড জড়িত না করে) সেট করতে পারেন ?
ড্যানিয়েল

@ ড্যানিয়েল রঙগুলি সংস্করণ-নির্দিষ্ট ডিরেক্টরিতেও হতে পারে, যেমন "মান" এবং "মান-ভি 21"।
আয়ান

12

অ্যান্ড্রয়েড ডিজাইনের গাইডলাইন অনুসারে আপনার অবশ্যই একটি সিলুয়েট ব্যবহার করতে হবে builder.setSmallIcon(R.drawable.some_notification_icon);তবে আপনি যদি এখনও কোনও নোটিফিকেশন আইকন হিসাবে রঙিন আইকনটি দেখতে চান তবে ললিপপ এবং উপরের কোডের নীচে ব্যবহারের কৌশল। লার্জ আইকন একটি প্রাথমিক বিজ্ঞপ্তি আইকন হিসাবে কাজ করবে এবং আপনাকে ছোট আইকনের জন্য একটি সিলুয়েট সরবরাহ করতে হবে কারণ এটি লার্জ আইকনের নীচে ডানদিকে প্রদর্শিত হবে।

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
{
     builder.setColor(context.getResources().getColor(R.color.red));
     builder.setSmallIcon(R.drawable.some_notification_icon);
     builder.setLargeIcon(BitmapFactory.decodeResource(context.getResources(), R.mipmap.ic_launcher));
}

এবং প্রি-ললিপপ কেবল .setSmallIcon(R.mipmap.ic_launcher)আপনার বিল্ডারের সাথে ব্যবহার করুন ।


11

এখন অ্যান্ড্রয়েড স্টুডিওতে একটি প্লাগইন ইমেজ অ্যাসেট সরবরাহ করা হচ্ছে যা সমস্ত প্রয়োজনীয় ড্রাবল ফোল্ডারে আইকন উত্পন্ন করবে

চিত্র সম্পদ স্টুডিও আপনাকে বিভিন্ন ঘনত্বে বিভিন্ন ধরণের আইকন তৈরি করতে সহায়তা করে এবং সেগুলি আপনার প্রকল্পে কোথায় স্থাপন করা হবে তা আপনাকে সঠিকভাবে দেখায়। এটিতে আপনার আইকনগুলি সামঞ্জস্য করার জন্য এবং ব্যাকড্রপগুলি যুক্ত করার জন্য সরঞ্জামগুলি অন্তর্ভুক্ত রয়েছে, সবকটি পূর্বরূপ ফলকে ফলাফল প্রদর্শন করার সময়, যাতে সেগুলি আপনার ইচ্ছা মতো ঠিক উপস্থিত হয়। এই সরঞ্জামগুলি আইকন ডিজাইন এবং আমদানি প্রক্রিয়াটি নাটকীয়ভাবে প্রবাহিত করতে পারে।

আপনি অ্যাক্সেস করতে পারেন ভাবমূর্তি অ্যাসেট > নতুন ক্লিক করে ভাবমূর্তি অ্যাসেট বিকল্প উপর ক্লিক করুন এবং এটা ভালো প্রদর্শনী জানালা হতে হবে: -

এখানে চিত্র বর্ণনা লিখুন

এখানে চিত্র বর্ণনা লিখুন


8

আমি একই সমস্যার মুখোমুখি হয়েছি এবং এটি আমার অ্যাপ্লিকেশন বিজ্ঞপ্তির আইকনটি সমতল নয় বলেই হয়েছিল। অ্যান্ড্রয়েড সংস্করণ ললিপপ বা ললিপপের নীচে এমনকি আপনার অ্যাপের বিজ্ঞপ্তি আইকনটি সমতল হওয়া উচিত, ছায়াগুলি সহ আইকন ব্যবহার করবেন না etc.

নীচে এমন কোড রয়েছে যা সমস্ত অ্যান্ড্রয়েড সংস্করণে পুরোপুরি সূক্ষ্মভাবে কাজ করেছিল।

private void sendNotification(String msg) {

    NotificationManager mNotificationManager = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE);

    Intent intent = new Intent(this, CheckOutActivity.class);

    PendingIntent contentIntent = PendingIntent.getActivity(this, 0, intent, 0);

    NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(
            this).setSmallIcon(R.drawable.ic_notification)
            .setContentTitle(getString(R.string.app_name))
            .setStyle(new NotificationCompat.BigTextStyle().bigText(msg))
            .setContentText(msg).setLights(Color.GREEN, 300, 300)
            .setVibrate(new long[] { 100, 250 })
            .setDefaults(Notification.DEFAULT_SOUND).setAutoCancel(true);

    mBuilder.setContentIntent(contentIntent);
    mNotificationManager.notify(new Random().nextInt(), mBuilder.build());
}

ভুল আইকন
এখানে চিত্র বর্ণনা লিখুন

ডান আইকন

এখানে চিত্র বর্ণনা লিখুন


1
আপনি এখানে সমস্যা ঠিক করছেন কোথায়?
ইগোরগানাপলস্কি

কিভাবে ডান আইকন তৈরি করতে হয়। অনলাইন তৈরি করা কি সম্ভব? কোন সরঞ্জাম ??
জিপস

@ জিকস হ্যাঁ, এখানে লিঙ্কটি রয়েছে
মুহাম্মদ

7

আলফা-চ্যানেলটি সেই চিত্রটির একমাত্র ডেটা যা অ্যান্ড্রয়েড বিজ্ঞপ্তি আইকনগুলির জন্য ব্যবহার করে:

  • alpha == 1: পিক্সেল সাদা দেখায়
  • alpha == 0: পিক্সেলগুলি আপনি বেছে নেওয়া রঙ হিসাবে দেখায় Notification.Builder#setColor(int)

এটি https://developer.android.com/about/versions/android-5.0-changes.html তে উল্লেখ করা হয়েছে :

সিস্টেম অ্যাকশন আইকনগুলিতে এবং প্রধান বিজ্ঞপ্তি আইকনে সমস্ত অ-আলফা চ্যানেল উপেক্ষা করে। আপনার অনুমান করা উচিত যে এই আইকনগুলি কেবলমাত্র আলফা হবে।

প্রায় সমস্ত অন্তর্নির্মিত অঙ্কনগুলি এটির জন্য উপযুক্ত আলফা চিত্র হিসাবে মনে হয়, তাই আপনি কিছু ব্যবহার করতে পারেন:

Notification.Builder.setColor(Color.RED)
                    .setSmallIcon(android.R.drawable.star_on)

তবে আমি এখনও এপিআই ডকটি খুঁজছি যা আনুষ্ঠানিকভাবে এটির নিশ্চিত করে।

অ্যান্ড্রয়েড 22 এ পরীক্ষা করা হয়েছে।


আমি setColorকিটক্যাট (এপিআই 19) এবং আইসক্রিমস্যান্ডউইচ (এপিআই 15) এ পরীক্ষা করেছি , উভয় ক্ষেত্রেই এটি রঙটিকে উপেক্ষা করেছে তবে ক্রাশ হয়নি । সুতরাং আমি ওএস সংস্করণ চেক করে নিরাপদে বাদ দিতে পারি?
মারিয়া

@ জনলিঃ আমি মনে করি এটি ক্রাশ হতে পারে না, কেবল খারাপ দেখায় আপনি এটিকে বিবেচনায় না নিলে :-)
সিওরো সান্তিলি 8 冠状 病 六四 事件

3

android:targetSdkVersion="21"ম্যানিফেস্ট.এক্সএমএল থেকে সরান । এটা কাজ করবে! এবং এটি থেকে আপনার এপিকে তেমন কোনও সমস্যা নেই এটি কেবল একটি কৌশল আমি এটি প্রয়োগ করি এবং বিজ্ঞপ্তিতে রঙিন আইকনটি পেয়েছি


9
পুরোপুরি খারাপ আইডিয়া সিস্টেমের সাথে "কৌশল" খেলুন! সমাধান নয়!
Sud007

3

নীচে বর্ণিত বিজ্ঞপ্তিগুলি গ্রেস্কেল are অন্যেরা যা লিখেছিল তা সত্ত্বেও এগুলি কালো-সাদা নয়। আপনি সম্ভবত নেটওয়ার্ক স্ট্যান্ড বারের মতো একাধিক শেডযুক্ত আইকন দেখেছেন।

API 21 এর আগে (ললিপপ 5.0), রঙের আইকনগুলি কাজ করে। আপনি আপনার অ্যাপ্লিকেশনটিকে এপিআই 20 টার্গেট করতে বাধ্য করতে পারেন, তবে এটি আপনার অ্যাপ্লিকেশনটিতে উপলব্ধ বৈশিষ্ট্যগুলিকে সীমাবদ্ধ করে, তাই এটি প্রস্তাবিত নয়। আপনি চলমান এপিআই স্তরটি পরীক্ষা করতে পারেন এবং কোনও রঙিন আইকন বা গ্রেস্কেল আইকনটি যথাযথভাবে সেট করতে পারেন তবে সম্ভবত এটি কার্যকর নয়। বেশিরভাগ ক্ষেত্রে, গ্রেস্কেল আইকনটি সহ সবচেয়ে ভাল।

চিত্রগুলির চারটি চ্যানেল রয়েছে, আরজিবিএ (লাল / সবুজ / নীল / আলফা)। বিজ্ঞপ্তি আইকনগুলির জন্য, অ্যান্ড্রয়েড আর, জি এবং বি চ্যানেলগুলি উপেক্ষা করে। একমাত্র চ্যানেল যা গণনা করে তা হ'ল আলফা, এটি অস্বচ্ছতা হিসাবেও পরিচিত। এমন একটি সম্পাদক দিয়ে আপনার আইকনটি তৈরি করুন যা আপনাকে আপনার আঁকার রঙের আলফা মান নিয়ন্ত্রণ করতে পারে।

আলফা মানগুলি কীভাবে গ্রেস্কেল চিত্র তৈরি করে:

  • আলফা = 0 (স্বচ্ছ) - এই পিক্সেলগুলি স্বচ্ছ, পটভূমির রঙ দেখাচ্ছে।
  • আলফা = 255 (অস্বচ্ছ) - এই পিক্সেলগুলি সাদা।
  • আলফা = 1 ... 254 - এই পিক্সেলগুলি হ'ল আপনি যা প্রত্যাশা করবেন ঠিক তা স্বচ্ছ এবং সাদাগুলির মধ্যে শেডগুলি সরবরাহ করে providing

এটি দিয়ে পরিবর্তন করা setColor:

  • কল করুন NotificationCompat.Builder.setColor(int argb)। এর জন্য ডকুমেন্টেশন থেকে Notification.color:

    এই বিজ্ঞপ্তিটি উপস্থাপন করার সময় মানক স্টাইল টেম্পলেটগুলি প্রয়োগ করার জন্য অ্যাকসেন্ট রঙ (রঙের ধ্রুবকের মতো একটি এআরজিবি পূর্ণসংখ্যার)। বর্তমান টেমপ্লেট ডিজাইনটি এই রঙের একটি ক্ষেত্রের উপরে আইকন চিত্রটি (সাদা রঙে স্টেনসিল্ড করা) ওভারলেল করে একটি বর্ণময় হেডার চিত্র তৈরি করে r আলফা উপাদানগুলি উপেক্ষা করা হয়।

    SetColor শো সঙ্গে আমার পরীক্ষামূলক আলফা উপাদান না উপেক্ষিত; পরিবর্তে, তারা এখনও গ্রেস্কেল সরবরাহ করে। উচ্চতর আলফা মানগুলি একটি পিক্সেল সাদা হয়ে যায়। লোয়ার আলফা মানগুলি বিজ্ঞপ্তি অঞ্চলে ব্যাকগ্রাউন্ড বর্ণ (আমার ডিভাইসে কালো) বা টান-ডাউন বিজ্ঞপ্তিতে নির্দিষ্ট রঙে একটি পিক্সেল ঘুরিয়ে দেয়। (দেখে মনে হচ্ছে অন্যরা কিছুটা ভিন্ন আচরণের প্রতিবেদন করেছেন, তাই সচেতন হন!)


2

পোস্ট অ্যান্ড্রয়েড ললিপপ রিলিজ অ্যান্ড্রয়েড বিজ্ঞপ্তি বারে বিজ্ঞপ্তি আইকন প্রদর্শনের জন্য নির্দেশিকা পরিবর্তন করেছে। অফিসিয়াল ডকুমেন্টেশনে বলা হয়েছে "রঙ জড়িত সম্পদগুলি আপডেট করুন বা সরান। এবং অ্যাকশন আইকনগুলি গা dark় ধূসর। এখন ম্যান শর্তগুলির অর্থ যা হ'ল "সেই চিত্রের সমস্ত অংশ রূপান্তর করুন যা আপনি স্বচ্ছ পিক্সেলগুলিতে দেখাতে চান না। সমস্ত বর্ণ এবং স্বচ্ছ পিক্সেল সাদাতে প্রদর্শিত হয় "

আপনি এখানে স্ক্রিনশটগুলির সাথে কীভাবে বিশদটি করবেন তা দেখতে পারেন https://blog.clevertap.com/fixing-notifications-icon-for-android-lollipop-and-above/

আশা করি এইটি কাজ করবে


2

আপনাকে একক রঙের স্বচ্ছ পিএনজি চিত্র আমদানি করতে হবে। সুতরাং আপনি ছোট আইকনের আইকন রঙ সেট করতে পারেন। অন্যথায় এটি মোটোর মতো কিছু ডিভাইসে সাদা দেখানো হবে


1

আপনি যদি গুগলফায়ারবেসমেজিং ব্যবহার করছেন, আপনি "বিজ্ঞপ্তি" পেডে "আইকন আইডি" সেট করতে পারেন (এটি আমাকে সাদা বার আইকন সমস্যা সমাধানে সহায়তা করে):

{
    "to":"<fb_id>",
    "priority" : "high",
    "notification" : 
    {
        "title" : "title",
        "body" : "body" ,
        "sound" : "default",
        "icon" : "ic_notification"
    }
}

সেট ic_notification R.drawable থেকে আপনার নিজের আইডি।


আপনি এই আইকনটি কোথায় রেখেছিলেন? আমি যা পেয়েছি তা হ'ল আমার অ্যাপ্লিকেশনটির আইকন এবং আমি যে সমস্ত আর.ড্রেবলযোগ্য ফাইল পেয়েছি সেগুলি বাইনারি ক্লাস ফাইল।
shinzou

@ কুহাকু তিনি 'অঙ্কনযোগ্য' ফোল্ডারে একটি আইস_লাউঞ্চার.পিএনজি ফাইল উল্লেখ করছেন।
জনসন

0

আমি এটিতেও অনেক সমস্যার মুখোমুখি হয়েছি তবে পুরো ইন্টারনেটে অনুসন্ধান করার পরে আমি এই সমস্যার জন্য বিভিন্ন সমাধান পেয়েছি me আমাকে সমস্ত সমাধানের সংকলন করে ব্যাখ্যা করুন:

দ্রষ্টব্য: এই সমাধানটি ফোনগ্যাপ কর্ডোভা ব্যবহারকারীদের জন্য

  1. উদাহরণ

<preference name="android-targetSdkVersion" value="20"/>

আপনাকে আপনার অ্যান্ড্রয়েড-টার্গেটএসডিপি ভার্সন মান 21 এরও কম সেট করতে হবে So সুতরাং এই মানটি সেট করার পরে বিজ্ঞপ্তি আইকন চিত্রটি অ্যান্ড্রয়েড 6 (মার্শমালো) অবধি প্রদর্শিত হবে, এটি অ্যান্ড্রয়েড 7 (নওগ্যাট) এ কাজ করবে না। এই সমাধানটি আমার পক্ষে কাজ করেছিল।

  1. আপনার কনফিগার ফাইলে স্ট্যাটাসবার স্টাইল পরিবর্তন করুন। উদাহরণ

<preference name="StatusBarStyle" value="lightcontent" />

তবে এই অ্যাপ্লিকেশনটি কেবল তখনই কার্যকর হবে যখন আপনার অ্যাপ্লিকেশনটি খোলা হবে। সুতরাং, আমি অনুমান করি যে এই সমাধানটি সেরা সমাধান নয় তবে এটি অনেক ব্যবহারকারীর পক্ষে কাজ করেছে।

  1. আপনার আইকন স্বচ্ছ করুন। এই সমাধানটি অনেক লোকের পক্ষে কাজ করেছিল। আসলে কথাটি হল, নেটিভ অ্যাপ্লিকেশনটির বিকাশে আমাদের তাদের তিনটি চিত্র সরবরাহ করতে হবে: (ক) অ্যাপ্লিকেশন আইকন (খ) বিজ্ঞপ্তি আইকন (গ) স্ট্যাটাস বার আইকন চিত্র, তবে হাইব্রিড মোবাইল অ্যাপ্লিকেশন বিকাশের ক্ষেত্রে কোনও বিকল্প নেই তাই করো. সুতরাং আপনার আইকনটিকে স্বচ্ছ করুন এবং এই সমাধানটি আপনার সমস্যার সমাধান করবে।

এবং আমি নিশ্চিত যে উপরের সমাধানগুলির মধ্যে একটি আপনার সমস্যার জন্য কাজ করবে।


0

এফওয়াইআই: যদি আইকনটি উপস্থিত না হয়, আপনার স্থানীয় বা দূরবর্তী বিজ্ঞপ্তি কনফিগারেশনে সঠিক আইকনের নাম রয়েছে তা নিশ্চিত করুন

'largeIcon' => 'ic_launcher',
'smallIcon' => 'ic_launcher' // defaults to ic_launcher, 

0

আমি মনে করি এপিআই 21 সম্পর্কে কথা বলতে দেরি হয়ে গেছে তবে আমি একটি সহজ উপায় খুঁজে পেয়েছি।

'কাস্টম বিজ্ঞপ্তি (কাস্টম বিন্যাস)' এর ব্যবহার করার সময়,

RemoteView এর

setImageViewResource(int viewId, int srcId);

এবং

setImageViewUri(int viewId, Uri uri); 

ললিপপ (এপিআই 21) এ সেই চিত্রগুলি সাদা করে তোলে।

কিন্তু ব্যবহার করার সময়

setImageViewBitmap(int viewId, Bitmap bitmap);

চিত্র সাদা মুখোশযুক্ত হয়ে ওঠে না!


0

ডকুমেন্টেশন অনুসারে, অ্যান্ড্রয়েড 3.0 (এপিআই স্তর 11) থেকে বিজ্ঞপ্তি আইকনটি অবশ্যই সাদা হতে হবে :

https://developer.android.com/guide/practices/ui_guidelines/icon_design_status_bar

"স্ট্যাটাস বার আইকনগুলি স্বচ্ছ ব্যাকড্রপগুলিতে কেবল সাদা পিক্সেলের সমন্বয়ে তৈরি করা হয়, যেখানে উপযুক্ত যেখানে মসৃণ প্রান্ত এবং অভ্যন্তরীণ টেক্সচারের জন্য আলফা মিশ্রণ ব্যবহৃত হয়।"


-3

অ্যাপ গ্রেডে এই দুটি জিনিস মিশ্রিত করুন

 defaultConfig {
    applicationId "com.example.abdulwahidvi.notificationproblem"
    minSdkVersion 16
    //This is the version that was added by project by default
    targetSdkVersion 26 <------ default
    // Changed it to version 20
    targetSdkVersion 20 <------ mine

    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}

-38

android:targetSdkVersion="20"এটি হওয়া উচিত < 21


1
দয়া করে এই সমাধানটি অনুসরণ করবেন না, এটি কার্যকর হতে পারে তা নিশ্চিত করুন তবে অ্যান্ড্রয়েডের নতুন সংস্করণগুলির জন্য সামঞ্জস্যতা মোডে আপনার অ্যাপ্লিকেশন চালানোর ব্যয়ে।
কিং_বেলো_মাই_লর্ড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.