1 /* 2 * Copyright (C) 2024 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.intentresolver.platform 18 19 import android.content.ComponentName 20 import android.content.res.Resources 21 import androidx.annotation.StringRes 22 import com.android.intentresolver.R 23 import com.android.intentresolver.inject.ApplicationOwned 24 import dagger.Module 25 import dagger.Provides 26 import dagger.hilt.InstallIn 27 import dagger.hilt.components.SingletonComponent 28 import java.util.Optional 29 import javax.inject.Qualifier 30 import javax.inject.Singleton 31 componentNamenull32internal fun Resources.componentName(@StringRes resId: Int): ComponentName? { 33 check(getResourceTypeName(resId) == "string") { "resId must be a string" } 34 return ComponentName.unflattenFromString(getString(resId)) 35 } 36 37 @Qualifier @MustBeDocumented @Retention(AnnotationRetention.RUNTIME) annotation class ImageEditor 38 39 @Module 40 @InstallIn(SingletonComponent::class) 41 object ImageEditorModule { 42 /** 43 * The name of the preferred Activity to launch for editing images. This is added to Intents to 44 * edit images using Intent.ACTION_EDIT. 45 */ 46 @Provides 47 @Singleton 48 @ImageEditor imageEditorComponentnull49 fun imageEditorComponent(@ApplicationOwned resources: Resources) = 50 Optional.ofNullable(resources.componentName(R.string.config_systemImageEditor)) 51 } 52