Закрытое действие, выбрасывающее DeadObjectException с частью кода ошибки без уведомления - PullRequest
0 голосов
/ 18 октября 2019

Код работает нормально для устройств ниже API28, он не работает для устройств выше или Api28. Часть кода, в которой выдается ошибка, не отображается отладчиком.

Часть, в которой выдается ошибка, относится к веб-браузеру и видеопроигрывателю.

Я пыталсядля всех устройств Android с менее чем API28, и код работает отлично.

    hRecycler.read.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

          //  Toast.makeText(context,url,Toast.LENGTH_SHORT).show();

            Intent i = new Intent(Intent.ACTION_VIEW);

            i.setData(Uri.parse(url));

            context.startActivity(i);
        }
    });

    @Override
    public void onSuccess(VimeoVideo video) {
    String streamlink = (String)video.getStreams().values().toArray()[0];
    Intent intent = new Intent(android.content.Intent.ACTION_VIEW);
    Uri data = Uri.parse(streamlink);
    intent.setDataAndType(data, "video/mp4");
    context.startActivity(intent);
    }

    @Override
    public void onFailure(Throwable throwable) {
    Toast.makeText(context,"Problem withlink",Toast.LENGTH_SHORT).show();
    }




 RemoteException occurs on reporting focusChanged, w=Window{bd21bfc u0 com.example.android.play_api/com.example.android.play_api.TestimonyActivity EXITING} android.os.DeadObjectException
         android.os.DeadObjectException
     at android.os.BinderProxy.transactNative(Native Method)
     at android.os.BinderProxy.transact(Binder.java:1143)
     at android.view.IWindow$Stub$Proxy.windowFocusChanged(IWindow.java:500)
     at com.android.server.wm.WindowState.reportFocusChangedSerialized(WindowState.java:3903)
     at com.android.server.wm.WindowManagerService$H.handleMessage(WindowManagerService.java:5426)
     at android.os.Handler.dispatchMessage(Handler.java:106)
     at android.os.Looper.loop(Looper.java:214)
     at android.os.HandlerThread.run(HandlerThread.java:65)
     at com.android.server.ServiceThread.run(ServiceThread.java:44)

1 Ответ

0 голосов
/ 19 октября 2019

Процесс не работает из-за неоднозначного контекста, используемого в обоих onClickListener для запуска действия, при передаче контекста в адаптер списка, в котором используется getApplicationContext () для передачи контекста в адаптер.

Эта проблема не смогла разместить процесс и завершить работу, что привело к сбою или DeadObjectException.

Проблема в строках:

context.startActivity(intent);
context.startActivity(i);

и контекст, заданный как getApplicationContext ()

Решение:

Измените getApplicationContext () на SomeActivity.this

И, возможно, API28 имеет свои новые правила, поэтому, поэтомуэто вызвало проблему в устройствах с API 28 или выше.

Надеюсь, что это помогает другим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...