How can I put my PopupWindow to the system desk or another app?
How can I use this permission: INTERNAL_SYSTEM_WINDOW 
Any examples?
How can I put my PopupWindow to the system desk or another app?
How can I use this permission: INTERNAL_SYSTEM_WINDOW 
Any examples?
public class PopupService extends Service implements IPopupTouchPosListener
{
 public final static String FIELD_EVENT = "event";
 /**
  * 开启
  */
 public final static int EVENT_SWITCH_ON = 1;
 /**
  * 关闭
  */
 public final static int EVENT_SWITCH_OFF = 2;
 private CustomPopupView mPopupView;
 private int mCurrentY;
 private RelativeLayout mLayout;
 private WindowManager mWindowManager;
 private WindowManager.LayoutParams mWmlp;
 @Override
 public void onCreate()
 {
  // TODO Auto-generated method stub
  super.onCreate();
  mWindowManager = (WindowManager)getSystemService(Context.WINDOW_SERVICE);
  // 获取屏幕宽度
  DisplayMetrics outMetrics = new DisplayMetrics();
  mWindowManager.getDefaultDisplay().getMetrics(outMetrics);
  int width = outMetrics.widthPixels;
  mWmlp = new WindowManager.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
  mWmlp.alpha = 0.5f;
  mWmlp.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; // 不能抢占聚焦点
  mWmlp.flags = mWmlp.flags | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH;
  mWmlp.flags = mWmlp.flags | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS; // 排版不受限制
  mWmlp.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;     // 系统提示类型
  mWmlp.width = width;
  mWmlp.height = 30;
  mWmlp.gravity = 2;
  mWmlp.format = -1;
  mWmlp.token = null;
  mWmlp.x = 0;
  mWmlp.y = 200;
  mCurrentY = mWmlp.y;
  mLayout = new RelativeLayout(this);
  mLayout.setBackgroundColor(0x00FFFFFF);
  mLayout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
  mPopupView = new CustomPopupView(this);
  mPopupView.setTouchPosListener(this);
  RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, 30);
  lp.bottomMargin = 0;
  lp.leftMargin = 0;
  mLayout.addView(mPopupView, lp);
 }
 @Override
 public void onStart(Intent intent, int startId)
 {
  super.onStart(intent, startId);
  Log.i(Constants.LOG_TAG, "popup service onstart");
  String action = intent.getAction();
  if(action != null && action.equals(ActionDef.ACTION_POPUP_SERVICE))
  {
   Bundle bundle = intent.getExtras();
   if(bundle != null)
   {
    int event = bundle.getInt(FIELD_EVENT);
    if(event == EVENT_SWITCH_ON)
    {
     // 显示
     mWindowManager.addView(mLayout, mWmlp);
    }
    else
    {
     mWindowManager.removeView(mLayout);
    }
   }
  }
 }
 @Override
 public IBinder onBind(Intent intent)
 {
  // TODO Auto-generated method stub
  return null;
 }
 @Override
 public void onMove(float x, float y)
 {
  if(mLayout != null)
  {
   Log.i(Constants.LOG_TAG, "y = " + y);
   if(y > mLayout.getHeight())
   {
    mCurrentY = (int)y + mCurrentY - mLayout.getHeight();
   }
   else if(y < 0)
   {
    mCurrentY = (int)y + mCurrentY;
   }
   // 只更新位置
   mWmlp.y = mCurrentY;
   mWindowManager.updateViewLayout(mLayout, mWmlp);
  }
 }
}
The problem is resolved. I use WindowManager.addView in a service, and WindowManager.LayoutParams.type = TYPE_SYSTEM_ALERT, then it's ok!