gpt4 book ai didi

android - Health Connect - 以编程方式打开应用程序

转载 作者:行者123 更新时间:2023-12-03 08:01:22 27 4
gpt4 key购买 nike

followed instructions to add HealthConnect service to the app但是,一旦用户批准了请求的权限,用户就没有简单的方法可以修改它们。他们必须转到 PlayStore,找到 HealthConnect,然后打开它 ( the icon was recently removed from the launcher )。

一个开放健康如何与 Android 中的 Intent 连接?一旦权限获得批准,以下代码将不起作用 requestPermissions.launch(PERMISSIONS)

完整的代码如下所示:

class HealthConnectFragment: Fragment(R.layout.fragment_health_connect) {
private val analyticsHelper: analyticsHelper by inject()

private var _binding: FragmentHealthConnectBinding? = null
// This property is only valid between onCreateView and onDestroyView.
private val binding get() = _binding!!

// Create the permissions launcher.
private val requestPermissionActivityContract = createRequestPermissionResultContract()

// Create the permissions launcher.
private val requestPermissions =
registerForActivityResult(requestPermissionActivityContract) { granted ->
if (granted.containsAll(HealthConnectApi.PERMISSIONS)) {
Timber.e("1 ALL PERMISSIONS GRANTED")
// Permissions successfully granted
} else {
// Lack of required permissions
Timber.e("1 LACKING PERMISSIONS")
}
}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
_binding = FragmentHealthConnectBinding.bind(view)

analyticsHelper.logScreenView(
Event.AppSetup.HEALTH_CONNECT_SETUP_FRAGMENT,
HealthConnectFragment::class.simpleName!!)

// Set click listener depending on the permissions.
binding.connectButton.setOnClickListener {
if (HealthConnectClient.isAvailable(requireContext())) {
Timber.e("YAYYA")
launchHealthConnectPermissions()
} else {
// ...
Timber.e("NAYYA")
}
}
}

private fun launchHealthConnectPermissions() {
viewLifecycleOwner.lifecycleScope.launchWhenStarted {
requestPermissions.launch(healthConnectApi.PERMISSIONS)
}
}

总而言之,当应用程序未批准权限时,此操作会将我带到 HealthConnect 应用程序以批准权限。当应用程序授予所有权限后,单击按钮不会执行任何操作。我希望始终启动 HealthConnect 应用程序。

谢谢

最佳答案

现在可以在基于 Android 14 系统的 Health Connect 中直接启动到应用程序的“权限”页面,但据我所知,对于 < 14 所需的单独应用程序来说这是不可能的。

14 日,您可以使用 ACTION_MANAGE_HEALTH_PERMISSIONS 启动它来自 HealthConnectManager 的 Intent 操作,传入您的包名称。

但是,您可以使用ACTION_HEALTH_CONNECT_SETTINGS仅启动设置在 <14

因此,有了这些,您可以做出最佳尝试:在 14+ 上显示权限屏幕,否则显示常规设置:

val intent = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
Intent(HealthConnectManager.ACTION_MANAGE_HEALTH_PERMISSIONS)
.putExtra(Intent.EXTRA_PACKAGE_NAME, BuildConfig.APPLICATION_ID)
} else {
Intent(HealthConnectClient.ACTION_HEALTH_CONNECT_SETTINGS)
}
startActivity(intent)

这假设运行 Android 14+ 的设备正在使用基于系统的 Health Connect,但是 HealthConnectClient 类本身正在执行此操作 - ACTION_HEALTH_CONNECT_SETTINGS 操作解析为 14 上的系统一,但其他情况下为旧版,因此可以安全地说这是预期的行为。

关于android - Health Connect - 以编程方式打开应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74047240/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com