انجمن سایت کلیدستان


رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
نمایش نوتیفیکیشن در یک زمان خاص (در برنامه نویسی اندروید)

نمایش نوتیفیکیشن در یک زمان خاص (در برنامه نویسی اندروید)

#1
سلام به همه 
دوستان من میخوام تو یه زمان خاص مثلا ساعت 12:10 شب یه نوتیفیکیشن نمایش داده بشه و این کار رو با service انجام دادم ولی نمیدونم چرا درست اجرا نمیشه 
فقط موقعی که مقدار ساعت و دقیقه زمان حال(یعنی همون موقع که داریم سرویس رو فعال میکنیم) با مقادیر تعیین شده توسط کاربر برابر باشه نوتیفیکیشن نمایش داده میشه 
الان یخورده گیج شدم این وسط 
یه دوستی گفت از alarm manager استفاده کنم ولی نمیدونم چجوری
اینم کد سرویسی که نوتیفیکیشن ارسال میکنه:

کد پی‌اچ‌پی:
public class NofiService extends Service {


    @
Override
    
public int onStartCommand(Intent intentint flagsint startId) {
        
SharedPreferences pref4 getSharedPreferences("NOTIFY"MODE_PRIVATE);
        
int hour pref4.getInt("hour",50);
        
int min pref4.getInt("min"100);
        
Date dt = new Date();
        
int hours dt.getHours();
        
int minutes dt.getMinutes();
        if ( 
hour == hours && min == minutes){
        
PendingIntent pIntent PendingIntent.getActivity(this, (int) System.currentTimeMillis(), intent0);
        
NotificationCompat.Builder mBuilder =   new NotificationCompat.Builder(this)
                .
setSmallIcon(R.mipmap.ic_launcher)
                .
setContentTitle("Notification!")
                .
setContentText("kelidestan.com")
                .
addAction(R.mipmap.ic_clear_white_24dp"           نه"pIntent)
                .
addAction(R.mipmap.ic_done_white_24dp"          آره"pIntent)
                .
setAutoCancel(true);
        
intent = new Intent(thisMainActivity.class);
            
PendingIntent pi PendingIntent.getActivity(this0intentPendingIntent.FLAG_NO_CREATE);
        
mBuilder.setContentIntent(pi);
        
NotificationManager mNotificationManager =
                (
NotificationManagergetSystemService(Context.NOTIFICATION_SERVICE);
        
mBuilder.setOngoing(true);
        
mNotificationManager.notify(0mBuilder.build());}
        return 
Service.START_FLAG_REDELIVERY;
    }

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

پاسخ

نمایش نوتیفیکیشن در یک زمان خاص (در برنامه نویسی اندروید)

#2
خب من خودم تونستم این کار رو انجام بدم گفتم اینجا نحوه کار رو توضیح بدم که بعدا دوستان استفاده کنن
با استفاده از service و alarmManager تعیین میکنیم که مثلا هر روز ساعت 12:10 نوتیفیکیشن نمایش داده بشه به کاربر:

این کد رو جایی که میخوایم نمایش نوتفیکیشن رو فعال کنیم مینویسیم مثلا تو رویداد کلیک یه دکمه:

کد پی‌اچ‌پی:
PendingIntent pendingIntent;
        
Intent myIntent = new Intent(this MyService.class);
//است MySevice اسم سرویسی که قراره کد نمایش نوتیفیکیشن رو داخلش بنویسم
        
AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
        
pendingIntent PendingIntent.getService(this0myIntent0);

        
Calendar calendar Calendar.getInstance();
//اینجا تعیین میکنیم که ساعت 12:10:59 نوتیفیکیشن نمایش داده بشه
//البته خیلی دقیق نیست حدودی هستش
        
calendar.set(Calendar.HOUR_OF_DAY12);
        
calendar.set(Calendar.MINUTE10);
        
calendar.set(Calendar.SECOND,59);

        
alarmManager.setRepeating(AlarmManager.RTC_WAKEUPcalendar.getTimeInMillis(), 24 60 60 1000pendingIntent);//اینجا هم میگیم که هر 24 ساعت یکبار دوباره نمایش داده بشه 

حالا باس یه سرویس ایجاد کنیم که کد نمایش نوتفیکیشن داخلش هست :
یه کلاس جاوا ایجاد میکنیم و کد زیر رو مینویسیم :

کد پی‌اچ‌پی:
public class MyService extends Service {


    @
Override
    
public int onStartCommand(Intent intentint flagsint startId) {

        
NotificationCompat.Builder mBuilder =   new NotificationCompat.Builder(this)
                .
setSmallIcon(R.mipmap.Icon)
                .
setContentTitle("خخخخخخخخخخ")
                .
setContentText("خخخخخخخخخخخ")
                .
setAutoCancel(true);

        
intent = new Intent(thisActivity.class);//اینجا هم که میگیم بعد از کلیک رو نوتیفیکیشن به اکتیویتی مورد نظر تشریف ببرد
        
PendingIntent pi PendingIntent.getActivity(this0intentPendingIntent.FLAG_UPDATE_CURRENT);

        
mBuilder.setContentIntent(pi);
        
NotificationManager mNotificationManager = (NotificationManagergetSystemService(Context.NOTIFICATION_SERVICE);
        
mNotificationManager.notify(0mBuilder.build());
        return 
Service.START_FLAG_REDELIVERY;
    }

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


تموم شد Smile
پاسخ
 سپاس شده توسط dost-67 ، داش بهروز ، admin

نمایش نوتیفیکیشن در یک زمان خاص (در برنامه نویسی اندروید)

#3
سلام
منم یه کاری می خوام انجام بدم مشابه کار شما منتهی با کمی تفاوت به شرح زیر:
من دارم روی یه پروژه todo کار می کنم که کارکردش به این صورته:
کاربر وارد نرم افزار میشه و میره تو بخش افزودن کار. بعد از پر کردن فیلدها و زدن دکمه افزودن اطلاعات در پایگاه داده ذخیره میشه.
من یه سرویس دارم که در پس زمینه داره انجام میشه.
یه کدی لازم دارم که هر یک دقیقه بره به پایگاه داده سر بزنه و زمان کارها رو چک کنه. اگه زمان انجام کاری فرارسیده بود با یه notification به کاربر اعلام کنه.

مشکلم توی هر دقیقه یکبار چک کردن پایگاه داده نیست بلکه تو ایجاد notification هست
نمی تونیم اینا رو باهم یکجا جمع کنم
پاسخ
 سپاس شده توسط شماره مجازی امارات ، تلگرام ضد فیلتر 2023


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان