diff options
Diffstat (limited to 'apk/src/com/android')
16 files changed, 72 insertions, 92 deletions
diff --git a/apk/src/com/android/healthconnect/controller/autodelete/AutoDeleteRangePickerPreference.kt b/apk/src/com/android/healthconnect/controller/autodelete/AutoDeleteRangePickerPreference.kt index 83bcb2ec..6c382503 100644 --- a/apk/src/com/android/healthconnect/controller/autodelete/AutoDeleteRangePickerPreference.kt +++ b/apk/src/com/android/healthconnect/controller/autodelete/AutoDeleteRangePickerPreference.kt @@ -54,10 +54,10 @@ constructor( key = AUTO_DELETE_RANGE_PICKER_PREFERENCE_KEY } - override fun onBindViewHolder(holder: PreferenceViewHolder?) { + override fun onBindViewHolder(holder: PreferenceViewHolder) { super.onBindViewHolder(holder) - val widgetFrame: ViewGroup = holder?.findViewById(android.R.id.widget_frame) as ViewGroup + val widgetFrame: ViewGroup = holder.findViewById(android.R.id.widget_frame) as ViewGroup val widgetFrameParent: LinearLayout = widgetFrame.parent as LinearLayout val iconFrame: LinearLayout? = holder.findViewById(android.R.id.icon_frame) as LinearLayout? diff --git a/apk/src/com/android/healthconnect/controller/autodelete/HeaderPreference.kt b/apk/src/com/android/healthconnect/controller/autodelete/HeaderPreference.kt index 53d9ee2c..93ea942d 100644 --- a/apk/src/com/android/healthconnect/controller/autodelete/HeaderPreference.kt +++ b/apk/src/com/android/healthconnect/controller/autodelete/HeaderPreference.kt @@ -31,10 +31,10 @@ import com.android.healthconnect.controller.utils.convertTextViewIntoLink class HeaderPreference constructor(context: Context, private val activity: FragmentActivity) : Preference(context) { - override fun onBindViewHolder(holder: PreferenceViewHolder?) { + override fun onBindViewHolder(holder: PreferenceViewHolder) { super.onBindViewHolder(holder) - val widgetFrame: ViewGroup = holder?.findViewById(android.R.id.widget_frame) as ViewGroup + val widgetFrame: ViewGroup = holder.findViewById(android.R.id.widget_frame) as ViewGroup val widgetFrameParent: LinearLayout = widgetFrame.parent as LinearLayout val iconFrame: LinearLayout? = holder.findViewById(android.R.id.icon_frame) as LinearLayout? widgetFrameParent.removeView(iconFrame) diff --git a/apk/src/com/android/healthconnect/controller/dataentries/units/UnitsFragment.kt b/apk/src/com/android/healthconnect/controller/dataentries/units/UnitsFragment.kt index 0501a7d0..e5598b2d 100644 --- a/apk/src/com/android/healthconnect/controller/dataentries/units/UnitsFragment.kt +++ b/apk/src/com/android/healthconnect/controller/dataentries/units/UnitsFragment.kt @@ -145,7 +145,7 @@ class UnitsFragment : Hilt_UnitsFragment() { unitValue: String, onNewValue: (String) -> Unit ): ListPreference { - val listPreference = ListPreference(context) + val listPreference = ListPreference(requireContext()) logger.logImpression(logName) with(listPreference) { diff --git a/apk/src/com/android/healthconnect/controller/home/HomeFragment.kt b/apk/src/com/android/healthconnect/controller/home/HomeFragment.kt index f446962d..c146b8fe 100644 --- a/apk/src/com/android/healthconnect/controller/home/HomeFragment.kt +++ b/apk/src/com/android/healthconnect/controller/home/HomeFragment.kt @@ -155,7 +155,7 @@ class HomeFragment : Hilt_HomeFragment() { MigrationState.MODULE_UPGRADE_REQUIRED, MigrationState.APP_UPGRADE_REQUIRED -> { migrationBanner = getMigrationBanner() - preferenceScreen.addPreference(migrationBanner) + preferenceScreen.addPreference(migrationBanner as BannerPreference) } MigrationState.COMPLETE -> { maybeShowWhatsNewDialog(requireContext()) diff --git a/apk/src/com/android/healthconnect/controller/migration/MigrationActivity.kt b/apk/src/com/android/healthconnect/controller/migration/MigrationActivity.kt index 0cd6d05f..e5c66d9c 100644 --- a/apk/src/com/android/healthconnect/controller/migration/MigrationActivity.kt +++ b/apk/src/com/android/healthconnect/controller/migration/MigrationActivity.kt @@ -187,9 +187,4 @@ class MigrationActivity : Hilt_MigrationActivity() { return true } - override fun onResume() { - super.onResume() - val navController = findNavController(R.id.nav_host_fragment) - navController.setGraph(R.navigation.migration_nav_graph) - } } diff --git a/apk/src/com/android/healthconnect/controller/migration/MigrationNavigationFragment.kt b/apk/src/com/android/healthconnect/controller/migration/MigrationNavigationFragment.kt index 07433568..8adeaa9c 100644 --- a/apk/src/com/android/healthconnect/controller/migration/MigrationNavigationFragment.kt +++ b/apk/src/com/android/healthconnect/controller/migration/MigrationNavigationFragment.kt @@ -23,7 +23,7 @@ class MigrationNavigationFragment : Hilt_MigrationNavigationFragment() { inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { + ): View { return inflater.inflate(R.layout.fragment_migration_navigation, container, false) } diff --git a/apk/src/com/android/healthconnect/controller/permissions/connectedapps/ConnectedAppsFragment.kt b/apk/src/com/android/healthconnect/controller/permissions/connectedapps/ConnectedAppsFragment.kt index 6bc24114..c428c6b5 100644 --- a/apk/src/com/android/healthconnect/controller/permissions/connectedapps/ConnectedAppsFragment.kt +++ b/apk/src/com/android/healthconnect/controller/permissions/connectedapps/ConnectedAppsFragment.kt @@ -85,28 +85,28 @@ class ConnectedAppsFragment : Hilt_ConnectedAppsFragment() { private val viewModel: ConnectedAppsViewModel by viewModels() private lateinit var searchMenuItem: MenuItem - private val mTopIntro: TopIntroPreference? by lazy { - preferenceScreen.findPreference(TOP_INTRO) + private val mTopIntro: TopIntroPreference by lazy { + preferenceScreen.findPreference(TOP_INTRO)!! } - private val mAllowedAppsCategory: PreferenceGroup? by lazy { - preferenceScreen.findPreference(ALLOWED_APPS_CATEGORY) + private val mAllowedAppsCategory: PreferenceGroup by lazy { + preferenceScreen.findPreference(ALLOWED_APPS_CATEGORY)!! } - private val mNotAllowedAppsCategory: PreferenceGroup? by lazy { - preferenceScreen.findPreference(NOT_ALLOWED_APPS) + private val mNotAllowedAppsCategory: PreferenceGroup by lazy { + preferenceScreen.findPreference(NOT_ALLOWED_APPS)!! } - private val mInactiveAppsCategory: PreferenceGroup? by lazy { - preferenceScreen.findPreference(INACTIVE_APPS) + private val mInactiveAppsCategory: PreferenceGroup by lazy { + preferenceScreen.findPreference(INACTIVE_APPS)!! } - private val mThingsToTryCategory: PreferenceGroup? by lazy { - preferenceScreen.findPreference(THINGS_TO_TRY) + private val mThingsToTryCategory: PreferenceGroup by lazy { + preferenceScreen.findPreference(THINGS_TO_TRY)!! } - private val mSettingsAndHelpCategory: PreferenceGroup? by lazy { - preferenceScreen.findPreference(SETTINGS_AND_HELP) + private val mSettingsAndHelpCategory: PreferenceGroup by lazy { + preferenceScreen.findPreference(SETTINGS_AND_HELP)!! } override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { @@ -271,7 +271,7 @@ class ConnectedAppsFragment : Hilt_ConnectedAppsFragment() { } private fun getNoAppsPreference(@StringRes res: Int): Preference { - return Preference(context).also { + return Preference(requireContext()).also { it.setTitle(res) it.isSelectable = false } @@ -375,10 +375,17 @@ class ConnectedAppsFragment : Hilt_ConnectedAppsFragment() { private fun setUpEmptyState() { mTopIntro?.title = getString(R.string.connected_apps_empty_list_section_title) - mThingsToTryCategory?.isVisible = true - mThingsToTryCategory?.addPreference(getCheckForUpdatesPreference()) - mThingsToTryCategory?.addPreference(getSeeAllCompatibleAppsPreference()) - mThingsToTryCategory?.addPreference(getSendFeedbackPreference()) + if (deviceInfoUtils.isPlayStoreAvailable(requireContext()) || + deviceInfoUtils.isSendFeedbackAvailable(requireContext())) { + mThingsToTryCategory?.isVisible = true + } + if (deviceInfoUtils.isPlayStoreAvailable(requireContext())) { + mThingsToTryCategory?.addPreference(getCheckForUpdatesPreference()) + mThingsToTryCategory?.addPreference(getSeeAllCompatibleAppsPreference()) + } + if (deviceInfoUtils.isSendFeedbackAvailable(requireContext())) { + mThingsToTryCategory?.addPreference(getSendFeedbackPreference()) + } setAppAndSettingsCategoriesVisibility(false) } diff --git a/apk/src/com/android/healthconnect/controller/permissions/connectedapps/HealthAppPreference.kt b/apk/src/com/android/healthconnect/controller/permissions/connectedapps/HealthAppPreference.kt index a170035d..8e6b2987 100644 --- a/apk/src/com/android/healthconnect/controller/permissions/connectedapps/HealthAppPreference.kt +++ b/apk/src/com/android/healthconnect/controller/permissions/connectedapps/HealthAppPreference.kt @@ -49,11 +49,11 @@ class HealthAppPreference(context: Context, private val appMetadata: AppMetadata } override fun setOnPreferenceClickListener( - onPreferenceClickListener: OnPreferenceClickListener + onPreferenceClickListener: OnPreferenceClickListener? ) { val loggingClickListener = OnPreferenceClickListener { logger.logInteraction(logName) - onPreferenceClickListener.onPreferenceClick(it) + onPreferenceClickListener?.onPreferenceClick(it) ?: false } super.setOnPreferenceClickListener(loggingClickListener) } @@ -67,7 +67,7 @@ class HealthAppPreference(context: Context, private val appMetadata: AppMetadata return preference is HealthAppPreference && appMetadata == preference.appMetadata } - override fun onBindViewHolder(view: PreferenceViewHolder?) { + override fun onBindViewHolder(view: PreferenceViewHolder) { super.onBindViewHolder(view) } } diff --git a/apk/src/com/android/healthconnect/controller/permissions/connectedapps/SettingsManagePermissionFragment.kt b/apk/src/com/android/healthconnect/controller/permissions/connectedapps/SettingsManagePermissionFragment.kt index 4799eb12..327cbaf9 100644 --- a/apk/src/com/android/healthconnect/controller/permissions/connectedapps/SettingsManagePermissionFragment.kt +++ b/apk/src/com/android/healthconnect/controller/permissions/connectedapps/SettingsManagePermissionFragment.kt @@ -166,7 +166,7 @@ class SettingsManagePermissionFragment : Hilt_SettingsManagePermissionFragment() } private fun getNoAppsPreference(@StringRes res: Int): Preference { - return Preference(context).also { + return Preference(requireContext()).also { it.setTitle(res) it.isSelectable = false } diff --git a/apk/src/com/android/healthconnect/controller/permissions/connectedapps/searchapps/SearchAppsFragment.kt b/apk/src/com/android/healthconnect/controller/permissions/connectedapps/searchapps/SearchAppsFragment.kt index c9a864b4..a683b981 100644 --- a/apk/src/com/android/healthconnect/controller/permissions/connectedapps/searchapps/SearchAppsFragment.kt +++ b/apk/src/com/android/healthconnect/controller/permissions/connectedapps/searchapps/SearchAppsFragment.kt @@ -59,20 +59,20 @@ class SearchAppsFragment : Hilt_SearchAppsFragment() { private var searchView: SearchView? = null private val viewModel: ConnectedAppsViewModel by viewModels() - private val allowedAppsCategory: PreferenceGroup? by lazy { - preferenceScreen.findPreference(ALLOWED_APPS_CATEGORY) + private val allowedAppsCategory: PreferenceGroup by lazy { + preferenceScreen.findPreference(ALLOWED_APPS_CATEGORY)!! } - private val notAllowedAppsCategory: PreferenceGroup? by lazy { - preferenceScreen.findPreference(NOT_ALLOWED_APPS) + private val notAllowedAppsCategory: PreferenceGroup by lazy { + preferenceScreen.findPreference(NOT_ALLOWED_APPS)!! } - private val inactiveAppsPreference: PreferenceGroup? by lazy { - preferenceScreen.findPreference(INACTIVE_APPS) + private val inactiveAppsPreference: PreferenceGroup by lazy { + preferenceScreen.findPreference(INACTIVE_APPS)!! } - private val emptySearchResultsPreference: NoSearchResultPreference? by lazy { - preferenceScreen.findPreference(EMPTY_SEARCH_RESULT) + private val emptySearchResultsPreference: NoSearchResultPreference by lazy { + preferenceScreen.findPreference(EMPTY_SEARCH_RESULT)!! } - private val topIntroPreference: TopIntroPreference? by lazy { - preferenceScreen.findPreference(TOP_INTRO_PREF) + private val topIntroPreference: TopIntroPreference by lazy { + preferenceScreen.findPreference(TOP_INTRO_PREF)!! } private val menuProvider = diff --git a/apk/src/com/android/healthconnect/controller/permissions/request/PermissionsFragment.kt b/apk/src/com/android/healthconnect/controller/permissions/request/PermissionsFragment.kt index d5b200e8..19c9292a 100644 --- a/apk/src/com/android/healthconnect/controller/permissions/request/PermissionsFragment.kt +++ b/apk/src/com/android/healthconnect/controller/permissions/request/PermissionsFragment.kt @@ -102,7 +102,7 @@ class PermissionsFragment : Hilt_PermissionsFragment() { inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { + ): View { logger.setPageId(pageName) return super.onCreateView(inflater, container, savedInstanceState) } diff --git a/apk/src/com/android/healthconnect/controller/recentaccess/RecentAccessFragment.kt b/apk/src/com/android/healthconnect/controller/recentaccess/RecentAccessFragment.kt index 5520c62f..8682e93a 100644 --- a/apk/src/com/android/healthconnect/controller/recentaccess/RecentAccessFragment.kt +++ b/apk/src/com/android/healthconnect/controller/recentaccess/RecentAccessFragment.kt @@ -82,7 +82,7 @@ class RecentAccessFragment : Hilt_RecentAccessFragment() { inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { + ): View { val rootView = super.onCreateView(inflater, container, savedInstanceState) contentParent = requireActivity().findViewById(android.R.id.content) diff --git a/apk/src/com/android/healthconnect/controller/shared/inactiveapp/InactiveAppPreference.kt b/apk/src/com/android/healthconnect/controller/shared/inactiveapp/InactiveAppPreference.kt index b9c29b99..65734349 100644 --- a/apk/src/com/android/healthconnect/controller/shared/inactiveapp/InactiveAppPreference.kt +++ b/apk/src/com/android/healthconnect/controller/shared/inactiveapp/InactiveAppPreference.kt @@ -49,10 +49,10 @@ class InactiveAppPreference constructor(context: Context) : AppPreference(contex logger.logImpression(logName) } - override fun onBindViewHolder(holder: PreferenceViewHolder?) { + override fun onBindViewHolder(holder: PreferenceViewHolder) { super.onBindViewHolder(holder) - val widgetFrame: ViewGroup? = holder?.findViewById(android.R.id.widget_frame) as ViewGroup? + val widgetFrame: ViewGroup? = holder.findViewById(android.R.id.widget_frame) as ViewGroup? widgetFrame?.setOnClickListener(deleteButtonListener) val widgetFrameParent: ViewGroup? = widgetFrame?.parent as ViewGroup? diff --git a/apk/src/com/android/healthconnect/controller/shared/preference/HealthPreference.kt b/apk/src/com/android/healthconnect/controller/shared/preference/HealthPreference.kt index 71abfc24..6178e7a7 100644 --- a/apk/src/com/android/healthconnect/controller/shared/preference/HealthPreference.kt +++ b/apk/src/com/android/healthconnect/controller/shared/preference/HealthPreference.kt @@ -55,11 +55,11 @@ constructor(context: Context, attrs: AttributeSet? = null) : // } override fun setOnPreferenceClickListener( - onPreferenceClickListener: OnPreferenceClickListener + onPreferenceClickListener: OnPreferenceClickListener? ) { val loggingClickListener = OnPreferenceClickListener { logger.logInteraction(logName) - onPreferenceClickListener.onPreferenceClick(it) + onPreferenceClickListener?.onPreferenceClick(it) ?: false } super.setOnPreferenceClickListener(loggingClickListener) } diff --git a/apk/src/com/android/healthconnect/controller/shared/preference/HealthPreferenceFragment.kt b/apk/src/com/android/healthconnect/controller/shared/preference/HealthPreferenceFragment.kt index f78b8dc4..50241f48 100644 --- a/apk/src/com/android/healthconnect/controller/shared/preference/HealthPreferenceFragment.kt +++ b/apk/src/com/android/healthconnect/controller/shared/preference/HealthPreferenceFragment.kt @@ -72,7 +72,7 @@ abstract class HealthPreferenceFragment : PreferenceFragmentCompat() { inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { + ): View { logger.setPageId(pageName) val rootView = inflater.inflate(R.layout.preference_frame, container, /*attachToRoot */ false) @@ -96,7 +96,7 @@ abstract class HealthPreferenceFragment : PreferenceFragmentCompat() { preferenceManager.preferenceComparisonCallback = HealthPreferenceComparisonCallback() } - override fun onCreateAdapter(preferenceScreen: PreferenceScreen?): RecyclerView.Adapter<*> { + override fun onCreateAdapter(preferenceScreen: PreferenceScreen): RecyclerView.Adapter<*> { val adapter = super.onCreateAdapter(preferenceScreen) /* By default, the PreferenceGroupAdapter does setHasStableIds(true). Since each Preference * is internally allocated with an auto-incremented ID, it does not allow us to gracefully diff --git a/apk/src/com/android/healthconnect/controller/utils/DeviceInfoUtils.kt b/apk/src/com/android/healthconnect/controller/utils/DeviceInfoUtils.kt index c710d9ec..20e5be0c 100644 --- a/apk/src/com/android/healthconnect/controller/utils/DeviceInfoUtils.kt +++ b/apk/src/com/android/healthconnect/controller/utils/DeviceInfoUtils.kt @@ -3,8 +3,6 @@ package com.android.healthconnect.controller.utils import android.content.ActivityNotFoundException import android.content.Context import android.content.Intent -import android.content.pm.ApplicationInfo -import android.content.pm.PackageManager import android.net.Uri import android.text.TextUtils import android.util.Log @@ -23,66 +21,38 @@ import javax.inject.Inject interface DeviceInfoUtils { fun isSendFeedbackAvailable(context: Context): Boolean - fun getFeedbackReporterPackage(context: Context): String? - fun isPlayStoreAvailable(context: Context): Boolean fun openHCGetStartedLink(activity: FragmentActivity) fun openSendFeedbackActivity(activity: FragmentActivity) + + fun isIntentHandlerAvailable(context: Context, intent: Intent): Boolean } class DeviceInfoUtilsImpl @Inject constructor() : DeviceInfoUtils { companion object { private val TAG = "DeviceInfoUtils" - private val FEEDBACK_REPORTER = "com.google.android.gms" } override fun isSendFeedbackAvailable(context: Context): Boolean { - return !TextUtils.isEmpty(getFeedbackReporterPackage(context)) - } - - override fun getFeedbackReporterPackage(context: Context): String? { - // Check to ensure the feedback reporter is on system image, and feedback reporter is - // configured to listen to the intent. Otherwise, don't show the "send feedback" preference. - val intent = Intent(Intent.ACTION_BUG_REPORT) - val pm = context.packageManager - val resolvedPackages = pm.queryIntentActivities(intent, PackageManager.GET_RESOLVED_FILTER) - for (info in resolvedPackages) { - if (info.activityInfo != null) { - if (!TextUtils.isEmpty(info.activityInfo.packageName)) { - try { - val ai = pm.getApplicationInfo(info.activityInfo.packageName, 0) - if (ai.flags and ApplicationInfo.FLAG_SYSTEM != 0) { - // Package is on the system image - if (TextUtils.equals( - info.activityInfo.packageName, FEEDBACK_REPORTER)) { - return FEEDBACK_REPORTER - } - } - } catch (e: PackageManager.NameNotFoundException) { - // No need to do anything here. - } - } - } - } - return null + return isIntentHandlerAvailable(context, Intent(Intent.ACTION_BUG_REPORT)) } override fun isPlayStoreAvailable(context: Context): Boolean { - val playStorePackageName = context.resources?.getString(R.string.playstore_package_name) + val playStorePackageName = context.resources?.getString(R.string.playstore_collection_url) + val vendingPackageName = context.resources?.getString(R.string.playstore_package_name) if (TextUtils.isEmpty(playStorePackageName) || playStorePackageName == null) { // Package name not configured. Return. return false } - val pm = context.packageManager - return try { - pm?.getApplicationInfo(playStorePackageName, 0) - true - } catch (e: PackageManager.NameNotFoundException) { - false - } + return isIntentHandlerAvailable( + context, + Intent(Intent.ACTION_VIEW).apply { + data = Uri.parse(playStorePackageName) + setPackage(vendingPackageName) + }) } override fun openHCGetStartedLink(activity: FragmentActivity) { @@ -104,6 +74,14 @@ class DeviceInfoUtilsImpl @Inject constructor() : DeviceInfoUtils { intent.putExtra("category_tag", USER_INITIATED_FEEDBACK_BUCKET_ID) activity.startActivityForResult(intent, FEEDBACK_INTENT_RESULT_CODE) } + + override fun isIntentHandlerAvailable(context: Context, intent: Intent): Boolean { + val packageManager = context.packageManager + if (intent.resolveActivity(packageManager) != null) { + return true + } + return false + } } @EntryPoint |