Modify SubmitCrosspostActivity to use SubmitPostService as a JobService. Add RECEIVER_NOT_EXPORTED in registerReceiver on Android 13+. Remove startForeground in DownloadRedditVideoService.

This commit is contained in:
Docile-Alligator
2024-07-24 11:07:03 -04:00
parent 40152c8376
commit 549a66d997
4 changed files with 41 additions and 12 deletions

View File

@ -7,6 +7,7 @@ import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.graphics.Typeface;
import android.net.ConnectivityManager;
import android.os.Build;
import android.os.Bundle;
import android.view.WindowManager;
import android.widget.Toast;
@ -157,9 +158,13 @@ public class Infinity extends Application implements LifecycleObserver {
mNetworkWifiStatusReceiver =
new NetworkWifiStatusReceiver(() -> EventBus.getDefault().post(new ChangeNetworkStatusEvent(Utils.getConnectedNetwork(getApplicationContext()))));
registerReceiver(mNetworkWifiStatusReceiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
registerReceiver(new WallpaperChangeReceiver(mSharedPreferences), new IntentFilter(Intent.ACTION_WALLPAPER_CHANGED));
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
registerReceiver(mNetworkWifiStatusReceiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION), RECEIVER_NOT_EXPORTED);
registerReceiver(new WallpaperChangeReceiver(mSharedPreferences), new IntentFilter(Intent.ACTION_WALLPAPER_CHANGED), RECEIVER_NOT_EXPORTED);
} else {
registerReceiver(mNetworkWifiStatusReceiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
registerReceiver(new WallpaperChangeReceiver(mSharedPreferences), new IntentFilter(Intent.ACTION_WALLPAPER_CHANGED));
}
}
@OnLifecycleEvent(Lifecycle.Event.ON_START)

View File

@ -239,7 +239,7 @@ public class EditProfileActivity extends BaseActivity {
extras.putInt(EditProfileService.EXTRA_POST_TYPE, EditProfileService.EXTRA_POST_TYPE_CHANGE_BANNER);
//TODO: contentEstimatedBytes
JobInfo jobInfo = EditProfileService.constructJobInfo(this, 100, extras);
JobInfo jobInfo = EditProfileService.constructJobInfo(this, 500000, extras);
((JobScheduler) getSystemService(Context.JOB_SCHEDULER_SERVICE)).schedule(jobInfo);
break;
}
@ -247,7 +247,7 @@ public class EditProfileActivity extends BaseActivity {
extras.putInt(EditProfileService.EXTRA_POST_TYPE, EditProfileService.EXTRA_POST_TYPE_CHANGE_AVATAR);
//TODO: contentEstimatedBytes
JobInfo jobInfo = EditProfileService.constructJobInfo(this, 100, extras);
JobInfo jobInfo = EditProfileService.constructJobInfo(this, 500000, extras);
((JobScheduler) getSystemService(Context.JOB_SCHEDULER_SERVICE)).schedule(jobInfo);
break;
}

View File

@ -1,5 +1,8 @@
package ml.docilealligator.infinityforreddit.activities;
import android.app.job.JobInfo;
import android.app.job.JobScheduler;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.res.ColorStateList;
@ -10,6 +13,7 @@ import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.PersistableBundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
@ -508,7 +512,7 @@ public class SubmitCrosspostActivity extends BaseActivity implements FlairBottom
subredditName = binding.subredditNameTextViewSubmitCrosspostActivity.getText().toString();
}
Intent intent = new Intent(this, SubmitPostService.class);
/*Intent intent = new Intent(this, SubmitPostService.class);
intent.putExtra(SubmitPostService.EXTRA_ACCOUNT, selectedAccount);
intent.putExtra(SubmitPostService.EXTRA_SUBREDDIT_NAME, subredditName);
intent.putExtra(SubmitPostService.EXTRA_TITLE, binding.postTitleEditTextSubmitCrosspostActivity.getText().toString());
@ -524,7 +528,32 @@ public class SubmitCrosspostActivity extends BaseActivity implements FlairBottom
intent.putExtra(SubmitPostService.EXTRA_RECEIVE_POST_REPLY_NOTIFICATIONS,
binding.receivePostReplyNotificationsSwitchMaterialSubmitCrosspostActivity.isChecked());
intent.putExtra(SubmitPostService.EXTRA_POST_TYPE, SubmitPostService.EXTRA_POST_TYPE_CROSSPOST);
ContextCompat.startForegroundService(this, intent);
ContextCompat.startForegroundService(this, intent);*/
PersistableBundle extras = new PersistableBundle();
extras.putString(SubmitPostService.EXTRA_ACCOUNT, selectedAccount.getJSONModel());
extras.putString(SubmitPostService.EXTRA_SUBREDDIT_NAME, subredditName);
String title = binding.postTitleEditTextSubmitCrosspostActivity.getText().toString();
extras.putString(SubmitPostService.EXTRA_TITLE, title);
if (post.isCrosspost()) {
extras.putString(SubmitPostService.EXTRA_CONTENT, "t3_" + post.getCrosspostParentId());
} else {
extras.putString(SubmitPostService.EXTRA_CONTENT, post.getFullName());
}
extras.putString(SubmitPostService.EXTRA_KIND, APIUtils.KIND_CROSSPOST);
if (flair != null) {
extras.putString(SubmitPostService.EXTRA_FLAIR, flair.getJSONModel());
}
extras.putInt(SubmitPostService.EXTRA_IS_SPOILER, isSpoiler ? 1 : 0);
extras.putInt(SubmitPostService.EXTRA_IS_NSFW, isNSFW ? 1 : 0);
extras.putInt(SubmitPostService.EXTRA_RECEIVE_POST_REPLY_NOTIFICATIONS,
binding.receivePostReplyNotificationsSwitchMaterialSubmitCrosspostActivity.isChecked() ? 1 : 0);
extras.putInt(SubmitPostService.EXTRA_POST_TYPE, SubmitPostService.EXTRA_POST_TYPE_CROSSPOST);
// TODO: contentEstimatedBytes
JobInfo jobInfo = SubmitPostService.constructJobInfo(this, title.length() * 2L + 20000, extras);
((JobScheduler) getSystemService(Context.JOB_SCHEDULER_SERVICE)).schedule(jobInfo);
return true;
}

View File

@ -130,11 +130,6 @@ public class DownloadRedditVideoService extends JobService {
notificationManager.createNotificationChannel(serviceChannel);
int randomNotificationIdOffset = new Random().nextInt(10000);
startForeground(
NotificationUtils.DOWNLOAD_REDDIT_VIDEO_NOTIFICATION_ID + randomNotificationIdOffset,
createNotification(builder, fileNameWithoutExtension + ".mp4")
);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
setNotification(params,
NotificationUtils.DOWNLOAD_REDDIT_VIDEO_NOTIFICATION_ID + randomNotificationIdOffset,