آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

ساخت notification ثابت مثل نمايش تاريخ

abdolsalam  9 سال پیش  9 سال پیش
0 0

سلام خدمت دوستان و اساتيد گرامي

 

مي خواستم يه notification ثابت مث notification هاي نمايش تاريخ براي برنامه م بزارم، ممنون ميشم راهنمايي م کنيد

 برای این سوال 3 پاسخ وجود دارد. مشاهده پاسخ صحیح
پاسخ به سوال 
Criss  9 سال پیش
+2 0

 پاسخ صحیح

نمونه کد :

     @SuppressLint("NewApi")
    private void notificationView(String title, String desc, int day) {
        Intent resultIntent = new Intent(G.context, ActivityMain.class);
        resultIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        TaskStackBuilder stackBuilder = TaskStackBuilder.create(G.context);
        stackBuilder.addNextIntent(resultIntent);
        PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);

        Bitmap normalBitmap = textAsBitmap("" + day);
        //  Bitmap normalBitmap = BitmapFactory.decodeResource(G.context.getResources(), R.drawable.ic_launcher);

        Notification noti = new Notification();
        Notification.Builder builder = new Builder(G.context);
        noti = builder.setOngoing(true)
                      .setSmallIcon(getResources().getIdentifier("day" + day, "drawable", G.context.getPackageName()))
                      .setAutoCancel(false)
                      .setLargeIcon(normalBitmap)
                      .setContentIntent(resultPendingIntent)
                      .setContentTitle(title)
                      .setContentText(desc)
                      .build();

        G.notificationManager.notify(3321, noti);
    }
 

 شما باید این نوتیفیکیشن رو در سرویس قرار بدید

پاسخ به سوال 
abdolsalam  9 سال پیش
0 0

خیلی ممنون از پاسختون

همون طوری که گفتین من داخل سرویس نوشتم و با استفاده از AlarmManeger هر نیمه شب نوتیفیکیشن رو آپدیت می کنم ولی آپدیت نمیشه، با Log چک کردم کد آپدیت اجرا میشه ولی نوتیفیکیشن نه!!

ممنون میشم اگه بازم راهنمایی م کنید

+1 0
کافیه نوتیفیکیشن رو با کد 3321 یا هر کدی که بهش دادید دوباره صدا بزنید (9 سال پیش)
+1 0
بجای Notification.Builder بهتر هست از android.support.v4.app.NotificationCompat.Builder استفاده کنید برای سازگاری با SDK های پایین مثل SDK 8 (9 سال پیش)
پاسخ به سوال 
abdolsalam  9 سال پیش
0 0

سلام، بازم ممنون از شما ازینکه پاسخ میدین

همون طوری که گفتین من با همون id نوتیفیکیشن رو آپدیت می کنم ولی جواب نمیده. من کدمو میزارم اگه لطف کنین نگاش کنید ممنون میشم

این کد سرویس:

 
public class ServiceUpdate extends Service {

// اشیای تاریخ
CivilDate cDate = new CivilDate();
PersianDate pDate = DateConverter.civilToPersian(cDate);
IslamicDate iDate = DateConverter.civilToIslamic(cDate);

@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}

@Override
public void onCreate() {
super.onCreate();
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
updateWidget();
updateNotification();

return super.onStartCommand(intent, flags, startId);
}

private void updateWidget(){
AppWidgetManager appWidgetManager = AppWidgetManager
.getInstance(this);
Intent intent1 = new Intent(G.context, ActivityMain.class);
PendingIntent pendingIntent = PendingIntent.getService(G.context, 0,
intent1, 0);
RemoteViews remoteViews = new RemoteViews(G.context.getPackageName(),
R.layout.widget_today);
remoteViews.setOnClickPendingIntent(R.id.lnrWidget, pendingIntent);

// update text views
remoteViews.setTextViewText(R.id.txtPDate, cDate.getDayOfWeekName() + " - " +
pDate.getDayOfMonth() + " " +
pDate.getMonthName() + " " +
pDate.getYear());
remoteViews.setTextViewText(R.id.txtCDate, cDate.getYear() + " " +
cDate.getMonthName() + " " +
cDate.getDayOfMonth());
remoteViews.setTextViewText(R.id.txtIDate, iDate.getDayOfMonth() + " " +
iDate.getMonthName() + " " +
iDate.getYear());
// Tell the widget manager
appWidgetManager.updateAppWidget(
new ComponentName(this.getPackageName(),
WidgetToday.class.getName()), remoteViews);
}

private void updateNotification(){
Intent resultIntent = new Intent(G.context, ActivityMain.class);
resultIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(G.context);
stackBuilder.addNextIntent(resultIntent);
PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);

// Bitmap normalBitmap = textAsBitmap("" + day);
// Bitmap normalBitmap = BitmapFactory.decodeResource(G.context.getResources(), R.drawable.ic_launcher);

//Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.day);

Notification noti;
Notification.Builder builder = new Notification.Builder(G.context);
noti = builder.setOngoing(true)
.setSmallIcon(getResources().getIdentifier("ic_launcher", "mipmap", G.context.getPackageName()))
.setAutoCancel(false)
//.setLargeIcon(bitmap)
.setContentIntent(resultPendingIntent)
.setContentTitle(cDate.getDayOfWeekName() + " - " +
pDate.getDayOfMonth() + " " +
pDate.getMonthName() + " " +
pDate.getYear())
.setContentText(cDate.getYear() + " " +
cDate.getMonthName() + " " +
cDate.getDayOfMonth() + ", " + iDate.getDayOfMonth() + " " +
iDate.getMonthName() + " " +
iDate.getYear())
.build();

G.notificationManager.notify(3321, noti);

Log.i("TAG", pDate.getDayOfMonth() + "");
}
}

 

این کد صدا زدن سرویس

 
public void startAlarmUpdater() {
Intent intent = new Intent(this, ServiceUpdate.class);
PendingIntent pending = PendingIntent.getService(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

boolean setAlarm = G.preferences.getBoolean("set_alarm", true);
if (setAlarm) {
G.alarm.setRepeating(AlarmManager.RTC, System.currentTimeMillis(), 60000, pending);
SharedPreferences.Editor editor = G.preferences.edit();
editor.putBoolean("set_alarm", false);
editor.commit();
}
}

 

اینم کدی که با بوت شدن گوشی اجرا میشه

 
public class BootCompleteReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
Intent myIntent = new Intent(G.context, ServiceUpdate.class);
PendingIntent pending = PendingIntent.getService(G.context, 0, myIntent, PendingIntent.FLAG_UPDATE_CURRENT);

G.alarm.setRepeating(AlarmManager.RTC, System.currentTimeMillis(), 60000, pending);
}
}

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .