小编典典

使用哪些 API 来覆盖其他应用程序(例如 Facebook 的 Chat Heads)?

all

Facebook 如何在 Android 上创建聊天头?在所有其他视图之上创建浮动视图的 API 是什么?


阅读 64

收藏
2022-06-08

共1个答案

小编典典

这个

允许应用程序使用 TYPE_SYSTEM_ALERT
类型打开窗口,显示在所有其他应用程序的顶部。很少有应用程序应该使用此权限;这些窗口旨在与用户进行系统级交互。

常量值:“android.permission.SYSTEM_ALERT_WINDOW”

//编辑:这里的完整代码:

public class ChatHeadService extends Service {

  private WindowManager windowManager;
  private ImageView chatHead;

  @Override public IBinder onBind(Intent intent) {
    // Not used
    return null;
  }

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

    windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);

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

    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.LEFT;
    params.x = 0;
    params.y = 100;

    windowManager.addView(chatHead, params);
  }

  @Override
  public void onDestroy() {
    super.onDestroy();
    if (chatHead != null) windowManager.removeView(chatHead);
  }
}

不要忘记以某种方式启动服务:

startService(new Intent(context, ChatHeadService.class));

..并将此服务添加到您的清单中。

2022-06-08