我想在服务弹出窗口上显示视频,但是当我启动该服务时,我的应用程序崩溃显示此错误: -
android.view.WindowManager$BadTokenException: Unable to add window -- token null is not valid; is your activity running?
我的视频播放器服务代码在这里:
VideoExtractor VideoExtractor = VideoExtractor.create();
VideoExtractor.extract("FTD9aA4S5BY").enqueue(new Callback<VideoExtractionResult>() {
@Override
public void onResponse(Call<YouTubeExtractionResult> call, Response<VideoExtractionResult> response) {
Log.d(TAG, response.body().getVideoUri().toString());
final VideoView mVideoview = (VideoView)mView.findViewById(R.id.youtubePlayer);
mVideoview.setMediaController(new MediaController(PlayerService.this))
mVideoview.setVideoURI(response.body().getVideoUri());
mVideoview.start();
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;
mWindowManager.addView(mView, params);
}
@Override
public void onFailure(Call<YouTubeExtractionResult> call, Throwable t) {
}
});
我在简历方法中使用myactivity调用此服务。
此错误的错误堆栈在这里:
android.view.WindowManager$BadTokenException: Unable to add window -- token null is not valid; is your activity running?
at android.view.ViewRootImpl.setView(ViewRootImpl.java:574)
at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:310)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:86)
at android.widget.MediaController.show(MediaController.java:379)
at android.widget.MediaController.show(MediaController.java:329)
at android.widget.VideoView$2.onPrepared(VideoView.java:454)
at android.media.MediaPlayer$EventHandler.handleMessage(MediaPlayer.java:2815)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5539)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
为什么我会收到此错误以及如何解决此问题。
答案 0 :(得分:1)
“WindowManager $ BadTokenException”当您使用像对话框这样的窗口级对象时,如果在关闭您的活动之前发生此错误,则会发生此错误。所以你应该把活动被破坏的条件,然后请使用上下文。