From 4551b1fbc94ddafe749ed59dfbd1a28456c3fe73 Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Tue, 23 Jul 2019 20:53:37 +0200 Subject: [PATCH 1/3] Fixed crash when context is null From Google Play console --- .../java/de/danoeh/antennapod/fragment/ItemFragment.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/ItemFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/ItemFragment.java index 149718569..432ada44e 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/ItemFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/ItemFragment.java @@ -603,8 +603,9 @@ public class ItemFragment extends Fragment implements OnSwipeGesture { @Nullable private FeedItem loadInBackground() { FeedItem feedItem = DBReader.getFeedItem(feedItems[feedItemPos]); - if (feedItem != null) { - Timeline t = new Timeline(getContext(), feedItem); + Context context = getContext(); + if (feedItem != null && context != null) { + Timeline t = new Timeline(context, feedItem); webviewData = t.processShownotes(false); } return feedItem; From 76f9040184bdf5a2a766c00b15530ec90ae6fbed Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Tue, 23 Jul 2019 20:56:34 +0200 Subject: [PATCH 2/3] Fixed NPE where trying to play null file Stack trace contains headset button handler, so I guess the media is not loaded correctly. --- .../de/danoeh/antennapod/core/service/playback/LocalPSMP.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/LocalPSMP.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/LocalPSMP.java index 7988526d9..9a8353806 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/playback/LocalPSMP.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/LocalPSMP.java @@ -243,7 +243,7 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer { callback.onMediaChanged(false); if (stream) { mediaPlayer.setDataSource(media.getStreamUrl()); - } else if (new File(media.getLocalMediaUrl()).canRead()) { + } else if (media.getLocalMediaUrl() != null && new File(media.getLocalMediaUrl()).canRead()) { mediaPlayer.setDataSource(media.getLocalMediaUrl()); } else { throw new IOException("Unable to read local file " + media.getLocalMediaUrl()); From 8b9c31ccf04128b78b6c286b2e5ae17871fe7a54 Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Tue, 23 Jul 2019 21:05:37 +0200 Subject: [PATCH 3/3] Do not set PlaybackService to null while still updating widget --- .../antennapod/activity/MediaplayerInfoActivity.java | 1 + .../core/service/PlayerWidgetJobService.java | 11 +++++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerInfoActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerInfoActivity.java index 858f28747..4fec1cfc5 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerInfoActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerInfoActivity.java @@ -169,6 +169,7 @@ public abstract class MediaplayerInfoActivity extends MediaplayerActivity implem pager.setCurrentItem(lastPosition); } + @Override protected void onStart() { super.onStart(); EventDistributor.getInstance().register(contentUpdate); diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/PlayerWidgetJobService.java b/core/src/main/java/de/danoeh/antennapod/core/service/PlayerWidgetJobService.java index 1165d689a..b26d3011d 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/PlayerWidgetJobService.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/PlayerWidgetJobService.java @@ -41,6 +41,7 @@ public class PlayerWidgetJobService extends SafeJobIntentService { private PlaybackService playbackService; private final Object waitForService = new Object(); + private final Object waitUsingService = new Object(); private static final int JOB_ID = -17001; @@ -67,7 +68,11 @@ public class PlayerWidgetJobService extends SafeJobIntentService { } } - updateViews(); + synchronized (waitUsingService) { + if (playbackService != null) { + updateViews(); + } + } if (playbackService != null) { try { @@ -230,7 +235,9 @@ public class PlayerWidgetJobService extends SafeJobIntentService { @Override public void onServiceDisconnected(ComponentName name) { - playbackService = null; + synchronized (waitUsingService) { + playbackService = null; + } Log.d(TAG, "Disconnected from service"); }