এটি হয়ত দেরীতে হতে পারে তবে আমি আশা করি এটি কারও সহায়ক হবে।
আমি এতদিন একই সমস্যায় আটকে ছিলাম। তবে এখন আমি কীভাবে এই সমস্যাটি সমাধান করব তা জানতাম। এটি যার যার একই সমস্যা হতে পারে for লোকেরা বলে চলেছে যে আপনাকে অটোস্টার্ট সক্ষম করতে হবে তবে আমি অটো স্টার্ট ব্যবহার করে এটি পরিচালনা করেছিলাম।
প্রথমত, ওয়েকফুলড্রোডকাস্টারাইসিভারটি এখন হ্রাস করা হয়েছে এবং আপনার ব্রডকাস্টআরসিভার ব্যবহার করা উচিত। দ্বিতীয়ত, আপনাকে ব্যাকগ্রাউন্ড সার্ভিসের পরিবর্তে ফরগ্রেড সার্ভিস ব্যবহার করতে হবে।
আমি আপনাকে নীচে উদাহরণ দিচ্ছি:
ইনসেন্টসওয়ার্স.ক্লাস
public class NotificationService extends IntentService {
public NotificationService() {
super("NotificationService");
}
@Override
public void onCreate() {
super.onCreate();
}
@Override
public int onStartCommand(@Nullable Intent intent, int flags, int startId) {
super.onStartCommand(intent, flags, startId);
return START_NOT_STICKY;
}
@Override
protected void onHandleIntent(@Nullable Intent intent) {
startForegroundServiceT();
sendNotification(intent);
stopSelf();
}
private void startForegroundServiceT(){
if (Build.VERSION.SDK_INT >= 26) {
String CHANNEL_ID = "my_channel_01";
NotificationChannel channel = new NotificationChannel(CHANNEL_ID,
"Channel human readable title",
NotificationManager.IMPORTANCE_DEFAULT);
((NotificationManager)
getSystemService(Context.NOTIFICATION_SERVICE)).createNotificationChannel(channel);
Notification notification = new Notification.Builder(this, CHANNEL_ID)
.setContentTitle("")
.setContentText("").build();
startForeground(1, notification);
}
}
private void sendNotification(Intent intent){
}
}
ব্রডকাস্টার্সিভার.ক্লাসে অগ্রভাগ পরিষেবা শুরু করুন
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Intent service = new Intent(context, NotificationService.class);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
context.startForegroundService(service);
} else {
context.startService(service);
}
}
}
এবং সেট অ্যালার্মগুলি এর মতো:
public static void setAlarm(Context context, int requestCode, int hour, int minute){
AlarmManager alarmManager =( AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context
, AlarmReceiver.class);
intent.setAction("android.intent.action.NOTIFY");
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 1001, intent, 0);
Calendar time = getTime(hour, minute);
if (Build.VERSION.SDK_INT >= 23){
alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP,time.getTimeInMillis(),pendingIntent);
}
else{
alarmManager.set(AlarmManager.RTC_WAKEUP,time.getTimeInMillis(),pendingIntent);
}
তারপরে আপনাকে ম্যানিফেস্টে রিসিভার এবং পূর্বগ্রন্থটি ঘোষণা করতে হবে।
<receiver android:name=".AlarmReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.NOTIFY">
</action>
</intent-filter>
</receiver>
<service
android:name=".NotificationService"
android:enabled="true"
android:exported="true"></service>
আমি আশা করি এটা কারো সাহায্যে লাগবে.