Fix media cannot be opened by clicking the download finished notification. Fix random post or subreddit still showing after users go back from FetchRandomSubredditOrPostActivity.

This commit is contained in:
Alex Ning 2020-10-14 22:13:46 +08:00
parent 2f94ef3f9a
commit db818d8ca8
4 changed files with 29 additions and 15 deletions

View File

@ -36,6 +36,7 @@ public class FetchRandomSubredditOrPostActivity extends BaseActivity {
SharedPreferences mSharedPreferences;
@Inject
CustomThemeWrapper mCustomThemeWrapper;
private boolean isCanceled = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
@ -51,23 +52,25 @@ public class FetchRandomSubredditOrPostActivity extends BaseActivity {
|| option == RandomBottomSheetFragment.RANDOM_NSFW_POST, new FetchPost.FetchRandomPostListener() {
@Override
public void fetchRandomPostSuccess(String postId, String subredditName) {
switch (option) {
case RandomBottomSheetFragment.RANDOM_SUBREDDIT:
case RandomBottomSheetFragment.RANDOM_NSFW_SUBREDDIT: {
Intent intent = new Intent(FetchRandomSubredditOrPostActivity.this, ViewSubredditDetailActivity.class);
intent.putExtra(ViewSubredditDetailActivity.EXTRA_SUBREDDIT_NAME_KEY, subredditName);
startActivity(intent);
}
break;
case RandomBottomSheetFragment.RANDOM_POST:
case RandomBottomSheetFragment.RANDOM_NSFW_POST:
Intent intent = new Intent(FetchRandomSubredditOrPostActivity.this, ViewPostDetailActivity.class);
intent.putExtra(ViewPostDetailActivity.EXTRA_POST_ID, postId);
startActivity(intent);
if (!isCanceled) {
switch (option) {
case RandomBottomSheetFragment.RANDOM_SUBREDDIT:
case RandomBottomSheetFragment.RANDOM_NSFW_SUBREDDIT: {
Intent intent = new Intent(FetchRandomSubredditOrPostActivity.this, ViewSubredditDetailActivity.class);
intent.putExtra(ViewSubredditDetailActivity.EXTRA_SUBREDDIT_NAME_KEY, subredditName);
startActivity(intent);
}
break;
}
case RandomBottomSheetFragment.RANDOM_POST:
case RandomBottomSheetFragment.RANDOM_NSFW_POST:
Intent intent = new Intent(FetchRandomSubredditOrPostActivity.this, ViewPostDetailActivity.class);
intent.putExtra(ViewPostDetailActivity.EXTRA_POST_ID, postId);
startActivity(intent);
break;
}
finish();
finish();
}
}
@Override
@ -78,6 +81,12 @@ public class FetchRandomSubredditOrPostActivity extends BaseActivity {
});
}
@Override
public void onBackPressed() {
super.onBackPressed();
isCanceled = true;
}
@Override
protected SharedPreferences getDefaultSharedPreferences() {
return mSharedPreferences;

View File

@ -302,6 +302,7 @@ public class DownloadMediaService extends Service {
Intent intent = new Intent();
intent.setAction(android.content.Intent.ACTION_VIEW);
intent.setDataAndType(destinationFileUri, mimeType);
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
updateNotification(R.string.downloading_media_finished, fileName, pendingIntent);
EventBus.getDefault().post(new DownloadMediaEvent(true));

View File

@ -306,6 +306,7 @@ public class DownloadRedditVideoService extends Service {
Intent intent = new Intent();
intent.setAction(android.content.Intent.ACTION_VIEW);
intent.setDataAndType(destinationFileUri, "video/*");
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
updateNotification(R.string.downloading_reddit_video_finished, fileName, pendingIntent);
EventBus.getDefault().post(new DownloadRedditVideoEvent(true));

View File

@ -2,6 +2,8 @@ package ml.docilealligator.infinityforreddit.Subreddit;
import android.os.AsyncTask;
import androidx.annotation.Nullable;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
@ -20,6 +22,7 @@ class ParseSubredditData {
new ParseSubredditListingDataAsyncTask(response, nsfw, parseSubredditListingDataListener).execute();
}
@Nullable
private static SubredditData parseSubredditData(JSONObject subredditDataJsonObject, boolean nsfw) throws JSONException {
boolean isNSFW = !subredditDataJsonObject.isNull(JSONUtils.OVER18_KEY) && subredditDataJsonObject.getBoolean(JSONUtils.OVER18_KEY);
if (!nsfw && isNSFW) {