Files
packages_apps_Settings/src/com/android/settings/wallpaper/WallpaperSuggestionActivity.java
Luca Stefani a5c93b1145 Fix-up starting style&wallpaper from search
Make sure the index entry points to the fragment, rather
than the actual target package as that's not supported.

StyleSuggestionActivityBase handles starting the activity
as configured in the controller by creating an Intent
and using startActivity.

Test: m, search/start wallpaper in SettingsIntelligence.
Bug: 326889654
Change-Id: I3347a0473f269c817c5bd3233bcd69ffa962f716
Signed-off-by: Luca Stefani <luca@osomprivacy.com>
2024-02-26 16:18:12 +00:00

93 lines
3.7 KiB
Java

/*
* Copyright (C) 2017 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.settings.wallpaper;
import android.app.WallpaperManager;
import android.content.Context;
import android.content.Intent;
import androidx.annotation.VisibleForTesting;
import com.android.settings.R;
import com.android.settings.display.WallpaperPreferenceController;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settingslib.search.Indexable;
import com.android.settingslib.search.SearchIndexable;
import com.android.settingslib.search.SearchIndexableRaw;
import com.google.android.setupcompat.util.WizardManagerHelper;
import java.util.ArrayList;
import java.util.List;
@SearchIndexable
public class WallpaperSuggestionActivity extends StyleSuggestionActivityBase implements Indexable {
private static final String WALLPAPER_FLAVOR_EXTRA = "com.android.launcher3.WALLPAPER_FLAVOR";
private static final String WALLPAPER_FOCUS = "focus_wallpaper";
private static final String WALLPAPER_ONLY = "wallpaper_only";
private static final String LAUNCHED_SUW = "app_launched_suw";
private String mWallpaperLaunchExtra;
@Override
protected void addExtras(Intent intent) {
if (WizardManagerHelper.isAnySetupWizard(intent)) {
intent.putExtra(WALLPAPER_FLAVOR_EXTRA, WALLPAPER_ONLY);
mWallpaperLaunchExtra =
getResources().getString(R.string.config_wallpaper_picker_launch_extra);
intent.putExtra(mWallpaperLaunchExtra, LAUNCHED_SUW);
} else {
intent.putExtra(WALLPAPER_FLAVOR_EXTRA, WALLPAPER_FOCUS);
}
}
@VisibleForTesting
public static boolean isSuggestionComplete(Context context) {
if (!isWallpaperServiceEnabled(context)) {
return true;
}
final WallpaperManager manager = (WallpaperManager) context.getSystemService(
WALLPAPER_SERVICE);
return manager.getWallpaperId(WallpaperManager.FLAG_SYSTEM) > 0;
}
public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
new BaseSearchIndexProvider() {
private static final String SUPPORT_SEARCH_INDEX_KEY = "wallpaper_type";
@Override
public List<SearchIndexableRaw> getRawDataToIndex(Context context,
boolean enabled) {
final List<SearchIndexableRaw> result = new ArrayList<>();
WallpaperPreferenceController controller =
new WallpaperPreferenceController(context, "unused key");
SearchIndexableRaw data = new SearchIndexableRaw(context);
data.title = controller.getTitle();
data.screenTitle = data.title;
data.intentTargetPackage = context.getPackageName();
data.intentTargetClass = WallpaperSuggestionActivity.class.getName();
data.intentAction = Intent.ACTION_MAIN;
data.key = SUPPORT_SEARCH_INDEX_KEY;
data.keywords = controller.getKeywords();
result.add(data);
return result;
}
};
}