1

chatHead (Facebook Messenger など) を作成するサービスを作成しました。

ただし、どのアクティビティまたはアプリケーションがフォアグラウンドにあるかを常にチェックするリスナーが必要です。

これが私のコードです-

    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);

    }

}

ActivityManager を使用すると、作成時に機能します。しかし、それは OnCreate メソッドにあるため、作成時にフォアグラウンド アクティビティのみを取得すると思います。

必要なのは、フォアグラウンドでのアクティビティが特定のアクティビティ (この場合は Whatsapp など) であるかどうかを検出するリスナーを用意することです。

それ、どうやったら出来るの?

ありがとう

4

0 に答える 0