Fix app crashes when changing a wallpaper. Fix Apply Material You option not working.

This commit is contained in:
Alex Ning 2021-07-04 08:44:31 +08:00
parent e3578c59dd
commit 30bce5b798
3 changed files with 17 additions and 24 deletions

View File

@ -3,24 +3,14 @@ package ml.docilealligator.infinityforreddit.broadcastreceivers;
import android.content.BroadcastReceiver; import android.content.BroadcastReceiver;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.SharedPreferences;
import javax.inject.Inject;
import javax.inject.Named;
import ml.docilealligator.infinityforreddit.services.MaterialYouService; import ml.docilealligator.infinityforreddit.services.MaterialYouService;
import ml.docilealligator.infinityforreddit.utils.SharedPreferencesUtils;
public class WallpaperChangeReceiver extends BroadcastReceiver { public class WallpaperChangeReceiver extends BroadcastReceiver {
@Inject
@Named("default")
SharedPreferences mSharedPreferences;
@Override @Override
public void onReceive(Context context, Intent intent) { public void onReceive(Context context, Intent intent) {
if (mSharedPreferences.getBoolean(SharedPreferencesUtils.ENABLE_MATERIAL_YOU, false)) {
Intent materialYouIntent = new Intent(context, MaterialYouService.class); Intent materialYouIntent = new Intent(context, MaterialYouService.class);
context.startService(materialYouIntent); context.startService(materialYouIntent);
} }
}
} }

View File

@ -14,9 +14,13 @@ import ml.docilealligator.infinityforreddit.Infinity;
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase; import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper; import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper;
import ml.docilealligator.infinityforreddit.utils.MaterialYouUtils; import ml.docilealligator.infinityforreddit.utils.MaterialYouUtils;
import ml.docilealligator.infinityforreddit.utils.SharedPreferencesUtils;
public class MaterialYouService extends IntentService { public class MaterialYouService extends IntentService {
@Inject
@Named("default")
SharedPreferences mSharedPreferences;
@Inject @Inject
@Named("light_theme") @Named("light_theme")
SharedPreferences lightThemeSharedPreferences; SharedPreferences lightThemeSharedPreferences;
@ -40,8 +44,10 @@ public class MaterialYouService extends IntentService {
@Override @Override
protected void onHandleIntent(Intent intent) { protected void onHandleIntent(Intent intent) {
((Infinity) getApplication()).getAppComponent().inject(this); ((Infinity) getApplication()).getAppComponent().inject(this);
if (mSharedPreferences.getBoolean(SharedPreferencesUtils.ENABLE_MATERIAL_YOU, false)) {
MaterialYouUtils.changeTheme(this, executor, new Handler(), redditDataRoomDatabase, MaterialYouUtils.changeTheme(this, executor, new Handler(), redditDataRoomDatabase,
customThemeWrapper, lightThemeSharedPreferences, darkThemeSharedPreferences, customThemeWrapper, lightThemeSharedPreferences, darkThemeSharedPreferences,
amoledThemeSharedPreferences); amoledThemeSharedPreferences);
} }
}
} }

View File

@ -190,15 +190,12 @@ public class ThemePreferenceFragment extends PreferenceFragmentCompat {
return true; return true;
}); });
applyMaterialYouPreference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { applyMaterialYouPreference.setOnPreferenceClickListener(preference -> {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
MaterialYouUtils.changeTheme(activity, executor, new Handler(), MaterialYouUtils.changeTheme(activity, executor, new Handler(),
redditDataRoomDatabase, customThemeWrapper, redditDataRoomDatabase, customThemeWrapper,
lightThemeSharedPreferences, darkThemeSharedPreferences, lightThemeSharedPreferences, darkThemeSharedPreferences,
amoledThemeSharedPreferences); amoledThemeSharedPreferences);
return true; return true;
}
}); });
} }