Method onHandleIntent() does not get called

11,105

May be your intent service isn't starting because you are overriding onStartCommand() method as android documentation says:

"You should not override this method(onStartCommand()) for your IntentService. Instead, override onHandleIntent(Intent), which the system calls when the IntentService receives a start request."


Hope so this will help you

Share:
11,105
KickAss
Author by

KickAss

Updated on June 06, 2022

Comments

  • KickAss
    KickAss almost 2 years

    After many hours of researching I am finally consulting official help. Why does not onHandleIntent() get called? Is there something wrong here?

    In main activity onCreate():

    mService = new Intent(context, xyz.class);
    startService(mService);
    

    That iss it. The onStartCommand() gets called, but not onHandleIntent()

    package com.autoalbumwallaperplus;
    
    import android.app.IntentService;
    import android.content.Intent;
    import android.widget.Toast;
    
    public class xyz extends IntentService {
        public xyz() {
            super("bmp");
        }
    
        @Override
        public int onStartCommand(Intent intent, int flags, int startId) {
            Toast.makeText(this,"onStartCommand works!", Toast.LENGTH_SHORT).show();
            return super.onStartCommand(intent,flags,startId);
        }
    
        @Override
        protected void onHandleIntent(Intent workIntent) {
            Toast.makeText(this,"onHandleIntent works!", Toast.LENGTH_SHORT).show();
        }
    }
    

    This is inside the OnHandleIntent

        String imagepath = workIntent.getStringExtra("String");
        Toast.makeText(this, "it works" , Toast.LENGTH_SHORT).show();
        DisplayMetrics displayMetrics = new DisplayMetrics();
        WindowManager hi = ((WindowManager) getBaseContext().getSystemService(Context.WINDOW_SERVICE));
        int height = displayMetrics.heightPixels;
        int width = displayMetrics.widthPixels << 2;
    
        // ... First decode with inJustDecodeBounds=true to check dimensions
        final BitmapFactory.Options options = new BitmapFactory.Options();
        options.inJustDecodeBounds = true;
        Bitmap decodedSampleBitmap = BitmapFactory.decodeFile(imagepath, options);
    
        // ... Calculate inSampleSize
        options.inSampleSize = calculateInSampleSize(options, width, height);
    
        // ... Decode bitmap with inSampleSize set
        options.inJustDecodeBounds = false;
        decodedSampleBitmap = BitmapFactory.decodeFile(imagepath, options);
    
        // ... Set Wallpaper
        //Context context = getApplicationContext();
        WallpaperManager wm = WallpaperManager.getInstance(this);
    
        try {
            wm.setBitmap(decodedSampleBitmap);
        } catch (IOException e) {
        }