Cannot remove view attached windowManager.addView ()

I am trying to remove a layer added to WindowManager. But nothing happens when I call removeView (). Does anyone know how to remove it? My code is as follows.

public class MainActivity extends Activity implements View.OnClickListener{ private WindowManager wm; private WindowManager.LayoutParams orientationLayout; private LinearLayout orientationChanger; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // init landscape things wm = (WindowManager) getApplicationContext().getSystemService(Service.WINDOW_SERVICE); orientationChanger = new LinearLayout(getApplicationContext()); orientationChanger.setClickable(false); orientationChanger.setFocusable(false); orientationChanger.setFocusableInTouchMode(false); orientationChanger.setLongClickable(false); orientationLayout = new WindowManager.LayoutParams( WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.TYPE_SYSTEM_ERROR, WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, PixelFormat.RGBA_8888); orientationLayout.screenOrientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE; // set view setContentView(R.layout.calibrate); findViewById(android.R.id.button).setOnClickListener(this); lockLandScape(); } public void lockLandScape(){ wm.addView(orientationChanger, orientationLayout); orientationChanger.setVisibility(View.GONE); orientationLayout.screenOrientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE; wm.updateViewLayout(orientationChanger, orientationLayout); orientationChanger.setVisibility(View.VISIBLE); } public void releaseLandScape(){ wm.removeView(orientationChanger); // This doesn't work as well //wm.removeViewImmediate(orientationChanger); } @Overrride public void onClick(View view){ Log.i("myapp", "clicked") releaseLandScape(); } } 
+4
source share
1 answer

Instead of using an attribute like wm you can try using

 (WindowManager) getApplicationContext().getSystemService(Service.WINDOW_SERVICE) 

everytime?

like:

 ((WindowManager) getApplicationContext().getSystemService(Service.WINDOW_SERVICE)).removeView(orientationChanger); 
+12
source

Source: https://habr.com/ru/post/1494736/


All Articles