1

I've created a service that creates a chatHead (like Facebook Messenger).

However, I want it to have a listener that always checks which activity or application is in the foreground.

Here's my code-

    public class ChatHeadService extends Service {

    private WindowManager windowManager;
    private ImageView chatHead;
    protected String lastPackageName;


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

    }

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

            ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
            String foreground = am.getRunningTasks(1).get(0).topActivity.getPackageName();
            if(foreground.equals("com.whatsapp"))
            Toast.makeText(getApplicationContext(), foreground, Toast.LENGTH_SHORT).show();


            windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);


            chatHead = new ImageView(this);
            chatHead.setImageResource(R.drawable.view_icon);

            final WindowManager.LayoutParams params = new WindowManager.LayoutParams(
                    WindowManager.LayoutParams.WRAP_CONTENT,
                    WindowManager.LayoutParams.WRAP_CONTENT,
                    WindowManager.LayoutParams.TYPE_PHONE,
                    WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
                    PixelFormat.TRANSLUCENT);

            params.gravity = Gravity.TOP | Gravity.START;
            params.x = 0;
            params.y = 100;


            windowManager.addView(chatHead, params);

        }



    @Override
    public void onDestroy() {
        super.onDestroy();
        if (chatHead != null) windowManager.removeView(chatHead);
        if(lastPackageName!="com.whatsapp") windowManager.removeView(chatHead);

    }

}

Using the ActivityManager, it does work when it is created. But I guess, since it is in the OnCreate method, it only gets the foreground activity when it is created.

What I need is to have a listener that would detect if the activity in the foreground is some specific activity (like in this case, Whatsapp).

How do I do that?

Thanks

deathstroke
  • 526
  • 12
  • 33

0 Answers0