আমি একটি অ্যান্ড্রয়েড অ্যাপ তৈরি করছি যেখানে আমার পটভূমি থেকে কোনও ক্রিয়াকলাপ শুরু করতে হবে। আমি একটি ফোরগ্রাউন্ড স্টার্টার ব্যবহার করছি যা এটি সম্পাদন করার জন্য পরিষেবাকে প্রসারিত করে। আমার একটি ক্রিয়াকলাপ অ্যাডস্ক্রিন.ক্লাস রয়েছে যা আমার ফোরগ্রাউন্ড পরিষেবা থেকে চালানো দরকার। ক্রিয়াকলাপ অ্যাডস্ক্রিন.ক্লাস অ্যান্ড্রয়েড 10 বাদে সমস্ত অ্যান্ড্রয়েড সংস্করণে সূক্ষ্মভাবে কাজ করে (পটভূমি থেকে শুরু হয়)।
ForeGroundStarter.class
public class ForeGroundStarter extends Service {
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
super.onCreate();
Log.d("sK", "Inside Foreground");
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.d("sK", "Inside Foreground onStartCommand");
Intent notificationIntent = new Intent(this, Adscreen.class);
PendingIntent pendingIntent =
PendingIntent.getActivity(this, 0, notificationIntent, 0);
Notification notification =
null;
//Launching Foreground Services From API 26+
notificationIntent = new Intent(this, Adscreen.class);
pendingIntent =
PendingIntent.getActivity(this, 0, notificationIntent, 0);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
String NOTIFICATION_CHANNEL_ID = "com.currency.usdtoinr";
String channelName = "My Background Service";
NotificationChannel chan = null;
chan = new NotificationChannel(NOTIFICATION_CHANNEL_ID, channelName, NotificationManager.IMPORTANCE_NONE);
chan.setLightColor(Color.BLUE);
chan.setLockscreenVisibility(Notification.VISIBILITY_PRIVATE);
NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
assert manager != null;
manager.createNotificationChannel(chan);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this, NOTIFICATION_CHANNEL_ID);
notification = notificationBuilder.setOngoing(true)
.setSmallIcon(R.drawable.nicon)
.setContentTitle("")
.setPriority(NotificationManager.IMPORTANCE_MIN)
.setCategory(Notification.CATEGORY_SERVICE)
.build();
startForeground(2, notification);
Intent dialogIntent = new Intent(this, Adscreen.class);
dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(dialogIntent);
Log.d("sk", "After startforeground executed");
}
else //API 26 and lower
{
notificationIntent = new Intent(this, Adscreen.class);
pendingIntent =
PendingIntent.getActivity(this, 0, notificationIntent, 0);
notification =
new Notification.Builder(this)
.setContentTitle("")
.setContentText("")
.setSmallIcon(R.drawable.nicon)
.setContentIntent(pendingIntent)
.setTicker("")
.build();
startForeground(2, notification);
Intent dialogIntent = new Intent(this, Adscreen.class);
dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(dialogIntent);
}
return super.onStartCommand(intent, flags, startId);
}
}
আমি পড়েছি যে অ্যান্ড্রয়েড 10 এ ব্যাকগ্রাউন্ড থেকে ক্রিয়াকলাপ শুরু করতে কিছু বিধিনিষেধ রয়েছে এই কোডটি আর কাজ করছে বলে মনে হয় না। https://developer.android.com/guide/components/activities/background-starts
Intent dialogIntent = new Intent(this, Adscreen.class);
dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(dialogIntent);
অ্যান্ড্রয়েড 10 এ ব্যাকগ্রাউন্ড থেকে কোনও ক্রিয়াকলাপ শুরু করার জন্য কোনও কাজের অভাব?