1

I was refering this post for adding a webview in service. However, I keep getting the error that windowManager is being added, but it already has a parent.

Code:

 WindowManager windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
    WindowManager.LayoutParams params = new WindowManager.LayoutParams(WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY, WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE, PixelFormat.TRANSLUCENT);
    params.gravity = Gravity.TOP | Gravity.START;
    params.x = 0;
    params.y = 0;
    params.width = 0;
    params.height = 0;

    LinearLayout view = new LinearLayout(this);
    view.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT));

    webView = new WebView(this);
    webView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));

    view.addView(webView);
    webView.loadUrl("http://google.com");
    windowManager.addView(webView, params);

Log:

Process: com.demo.webviewscriptapplication, PID: 32282
    java.lang.RuntimeException: Unable to create service com.demo.webviewscriptapplication.MyService: java.lang.RuntimeException: view android.webkit.WebView{9e874fa VFEDHVC.. ......I. 0,0-0,0} being added, but it already has a parent
        at android.app.ActivityThread.handleCreateService(ActivityThread.java:3201)
        at android.app.ActivityThread.-wrap5(ActivityThread.java)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1567)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:154)
        at android.app.ActivityThread.main(ActivityThread.java:6126)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
     Caused by: java.lang.RuntimeException: view android.webkit.WebView{9e874fa VFEDHVC.. ......I. 0,0-0,0} being added, but it already has a parent
        at android.view.View.assignParent(View.java:15012)
        at android.view.ViewRootImpl.setView(ViewRootImpl.java:731)
        at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:342)
        at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:94)
        at com.demo.webviewscriptapplication.MyService.onCreate(MyService.java:67)
        at android.app.ActivityThread.handleCreateService(ActivityThread.java:3191)
        at android.app.ActivityThread.-wrap5(ActivityThread.java) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1567) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:154) 
        at android.app.ActivityThread.main(ActivityThread.java:6126) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 
piet.t
  • 11,718
  • 21
  • 43
  • 52

1 Answers1

0

view.addView(webView) Just remove this line then it should work properly. If not create proper webview object using application context or creating xml file. Basically error is you are adding webview two times to the view.

Shubham
  • 468
  • 5
  • 14