Loading src/com/android/settings/LegalSettings.java +11 −0 Original line number Diff line number Diff line Loading @@ -17,8 +17,13 @@ package com.android.settings; import android.app.settings.SettingsEnums; import android.content.Context; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import com.android.settings.dashboard.DashboardFragment; import com.android.settings.deviceinfo.legal.LegalSettingsScreen; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settingslib.search.SearchIndexable; Loading @@ -44,4 +49,10 @@ public class LegalSettings extends DashboardFragment { public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = new BaseSearchIndexProvider(R.xml.about_legal); @Nullable @Override public String getPreferenceScreenBindingKey(@NonNull Context context) { return LegalSettingsScreen.KEY; } } src/com/android/settings/deviceinfo/legal/CopyrightPreferenceController.java +2 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.settings.deviceinfo.legal; import android.content.Context; import android.content.Intent; // LINT.IfChange public class CopyrightPreferenceController extends LegalPreferenceController { private static final Intent INTENT = new Intent("android.settings.COPYRIGHT"); Loading @@ -30,3 +31,4 @@ public class CopyrightPreferenceController extends LegalPreferenceController { return INTENT; } } // LINT.ThenChange(LegalPreference.kt) src/com/android/settings/deviceinfo/legal/LegalPreference.kt 0 → 100644 +58 −0 Original line number Diff line number Diff line /* * Copyright (C) 2024 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.deviceinfo.legal import android.content.Context import android.content.Intent import android.content.pm.ApplicationInfo import android.content.pm.ResolveInfo import androidx.annotation.StringRes import com.android.settingslib.metadata.PreferenceAvailabilityProvider import com.android.settingslib.metadata.PreferenceMetadata import com.android.settingslib.metadata.PreferenceTitleProvider // LINT.IfChange class LegalPreference( override val key: String, @StringRes val defaultTitle: Int = 0, val intentAction: String, ) : PreferenceMetadata, PreferenceTitleProvider, PreferenceAvailabilityProvider { override fun getTitle(context: Context): CharSequence? { val resolveInfo = findMatchingSpecificActivity(context) ?: return context.getText(defaultTitle) return resolveInfo.loadLabel(context.packageManager) } override fun isAvailable(context: Context) = (findMatchingSpecificActivity(context) != null) override fun intent(context: Context) = findMatchingSpecificActivity(context)?.let { Intent() .setClassName(it.activityInfo.packageName, it.activityInfo.name) .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) } private fun findMatchingSpecificActivity(context: Context): ResolveInfo? { val intent = Intent(intentAction) // Find the activity that is in the system image val list: List<ResolveInfo> = context.packageManager.queryIntentActivities(intent, 0) return list.firstOrNull { (it.activityInfo.applicationInfo.flags and ApplicationInfo.FLAG_SYSTEM) != 0 } } } // LINT.ThenChange(LegalPreferenceController.java) src/com/android/settings/deviceinfo/legal/LegalPreferenceController.java +2 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ import com.android.settings.core.BasePreferenceController; import java.util.List; // LINT.IfChange public abstract class LegalPreferenceController extends BasePreferenceController { private final PackageManager mPackageManager; private Preference mPreference; Loading Loading @@ -94,3 +95,4 @@ public abstract class LegalPreferenceController extends BasePreferenceController mPreference.setTitle(resolveInfo.loadLabel(mPackageManager)); } } // LINT.ThenChange(LegalPreference.kt) src/com/android/settings/deviceinfo/legal/LegalSettingsScreen.kt 0 → 100644 +55 −0 Original line number Diff line number Diff line /* * Copyright (C) 2024 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.deviceinfo.legal import android.content.Context import com.android.settings.LegalSettings import com.android.settings.R import com.android.settings.flags.Flags import com.android.settingslib.metadata.ProvidePreferenceScreen import com.android.settingslib.metadata.preferenceHierarchy import com.android.settingslib.preference.PreferenceScreenCreator @ProvidePreferenceScreen open class LegalSettingsScreen : PreferenceScreenCreator { override val key: String get() = KEY override val title: Int get() = R.string.legal_information override fun isFlagEnabled(context: Context) = Flags.catalystLegalInformation() override fun fragmentClass() = LegalSettings::class.java override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(this) { +LegalPreference("copyright", R.string.copyright_title, "android.settings.COPYRIGHT") +LegalPreference("license", R.string.license_title, "android.settings.LICENSE") +LegalPreference("terms", R.string.terms_title, "android.settings.TERMS") +ModuleLicensesScreen.KEY // Use screen key in case it is overlaid. +LegalPreference( "webview_license", R.string.webview_license_title, "android.settings.WEBVIEW_LICENSE", ) +WallpaperAttributionsPreference() } companion object { const val KEY = "legal_information" } } Loading
src/com/android/settings/LegalSettings.java +11 −0 Original line number Diff line number Diff line Loading @@ -17,8 +17,13 @@ package com.android.settings; import android.app.settings.SettingsEnums; import android.content.Context; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import com.android.settings.dashboard.DashboardFragment; import com.android.settings.deviceinfo.legal.LegalSettingsScreen; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settingslib.search.SearchIndexable; Loading @@ -44,4 +49,10 @@ public class LegalSettings extends DashboardFragment { public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = new BaseSearchIndexProvider(R.xml.about_legal); @Nullable @Override public String getPreferenceScreenBindingKey(@NonNull Context context) { return LegalSettingsScreen.KEY; } }
src/com/android/settings/deviceinfo/legal/CopyrightPreferenceController.java +2 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.settings.deviceinfo.legal; import android.content.Context; import android.content.Intent; // LINT.IfChange public class CopyrightPreferenceController extends LegalPreferenceController { private static final Intent INTENT = new Intent("android.settings.COPYRIGHT"); Loading @@ -30,3 +31,4 @@ public class CopyrightPreferenceController extends LegalPreferenceController { return INTENT; } } // LINT.ThenChange(LegalPreference.kt)
src/com/android/settings/deviceinfo/legal/LegalPreference.kt 0 → 100644 +58 −0 Original line number Diff line number Diff line /* * Copyright (C) 2024 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.deviceinfo.legal import android.content.Context import android.content.Intent import android.content.pm.ApplicationInfo import android.content.pm.ResolveInfo import androidx.annotation.StringRes import com.android.settingslib.metadata.PreferenceAvailabilityProvider import com.android.settingslib.metadata.PreferenceMetadata import com.android.settingslib.metadata.PreferenceTitleProvider // LINT.IfChange class LegalPreference( override val key: String, @StringRes val defaultTitle: Int = 0, val intentAction: String, ) : PreferenceMetadata, PreferenceTitleProvider, PreferenceAvailabilityProvider { override fun getTitle(context: Context): CharSequence? { val resolveInfo = findMatchingSpecificActivity(context) ?: return context.getText(defaultTitle) return resolveInfo.loadLabel(context.packageManager) } override fun isAvailable(context: Context) = (findMatchingSpecificActivity(context) != null) override fun intent(context: Context) = findMatchingSpecificActivity(context)?.let { Intent() .setClassName(it.activityInfo.packageName, it.activityInfo.name) .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) } private fun findMatchingSpecificActivity(context: Context): ResolveInfo? { val intent = Intent(intentAction) // Find the activity that is in the system image val list: List<ResolveInfo> = context.packageManager.queryIntentActivities(intent, 0) return list.firstOrNull { (it.activityInfo.applicationInfo.flags and ApplicationInfo.FLAG_SYSTEM) != 0 } } } // LINT.ThenChange(LegalPreferenceController.java)
src/com/android/settings/deviceinfo/legal/LegalPreferenceController.java +2 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ import com.android.settings.core.BasePreferenceController; import java.util.List; // LINT.IfChange public abstract class LegalPreferenceController extends BasePreferenceController { private final PackageManager mPackageManager; private Preference mPreference; Loading Loading @@ -94,3 +95,4 @@ public abstract class LegalPreferenceController extends BasePreferenceController mPreference.setTitle(resolveInfo.loadLabel(mPackageManager)); } } // LINT.ThenChange(LegalPreference.kt)
src/com/android/settings/deviceinfo/legal/LegalSettingsScreen.kt 0 → 100644 +55 −0 Original line number Diff line number Diff line /* * Copyright (C) 2024 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.deviceinfo.legal import android.content.Context import com.android.settings.LegalSettings import com.android.settings.R import com.android.settings.flags.Flags import com.android.settingslib.metadata.ProvidePreferenceScreen import com.android.settingslib.metadata.preferenceHierarchy import com.android.settingslib.preference.PreferenceScreenCreator @ProvidePreferenceScreen open class LegalSettingsScreen : PreferenceScreenCreator { override val key: String get() = KEY override val title: Int get() = R.string.legal_information override fun isFlagEnabled(context: Context) = Flags.catalystLegalInformation() override fun fragmentClass() = LegalSettings::class.java override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(this) { +LegalPreference("copyright", R.string.copyright_title, "android.settings.COPYRIGHT") +LegalPreference("license", R.string.license_title, "android.settings.LICENSE") +LegalPreference("terms", R.string.terms_title, "android.settings.TERMS") +ModuleLicensesScreen.KEY // Use screen key in case it is overlaid. +LegalPreference( "webview_license", R.string.webview_license_title, "android.settings.WEBVIEW_LICENSE", ) +WallpaperAttributionsPreference() } companion object { const val KEY = "legal_information" } }