Ошибка подключения здоровья при программном открытии настройки приложенияAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Ошибка подключения здоровья при программном открытии настройки приложения

Сообщение Anonymous »

Этот код функционирует, как и ожидалось в эмуляторе с использованием pixel 9 API 34 < /em>
, но сбои на Samsung Galaxy A16* (Android 14) при попытке начать намерение с Action Action_manage_Health_permissions < /p>
android.permission.grant_runtime_permissions
Это ошибка? Чего мне не хватает? < /P>
settingsOpenHealthConnect.setOnClickListener(v -> {
Log.d(TAG," settingsOpenHealthConnect.setOnClickListener");
HealthConnectActions healthConnectActions = new HealthConnectActions(this);
healthConnectActions.openSettings();
});
< /code>
import android.content.ContentValues.TAG
import android.content.Context
import android.content.Intent
import android.health.connect.HealthConnectManager
import android.net.Uri
import android.os.Build
import android.util.Log
import androidx.compose.runtime.mutableStateOf
import androidx.core.content.ContextCompat.startActivity
import androidx.health.connect.client.HealthConnectClient
import androidx.health.connect.client.HealthConnectClient.Companion.SDK_AVAILABLE
import androidx.health.connect.client.permission.HealthPermission
import androidx.health.connect.client.records.StepsRecord
import kotlinx.coroutines.TimeoutCancellationException
import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.withTimeoutOrNull

class HealthConnectActions(private val context: Context) {
private val healthConnectClient by lazy { HealthConnectClient.getOrCreate(context) }

fun openSettings() {
val intent = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
Intent(HealthConnectManager.ACTION_MANAGE_HEALTH_PERMISSIONS)
.putExtra(
Intent.EXTRA_PACKAGE_NAME,
context.packageName
)
} else {
Intent(
HealthConnectClient.ACTION_HEALTH_CONNECT_SETTINGS
)
}
startActivity(context, intent, null)
}

}
< /code>





















































< /code>
FATAL EXCEPTION: main
Process: com.health.fitness.exercise, PID: 32757
java.lang.SecurityException: Permission Denial: starting Intent { act=android.health.connect.action.MANAGE_HEALTH_PERMISSIONS flg=0x10000000 cmp=com.google.android.healthconnect.controller/com.android.healthconnect.controller.PermissionControllerEntryPoint (has extras) } from ProcessRecord{e5c41b5 32757:com.health.fitness.exercise/u0a299} (pid=32757, uid=10299) requires android.permission.GRANT_RUNTIME_PERMISSIONS
at android.os.Parcel.createExceptionOrNull(Parcel.java:3069)
at android.os.Parcel.createException(Parcel.java:3053)
at android.os.Parcel.readException(Parcel.java:3036)
at android.os.Parcel.readException(Parcel.java:2978)
at android.app.IActivityTaskManager$Stub$Proxy.startActivity(IActivityTaskManager.java:3042)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1873)
at android.app.Activity.startActivityForResult(Activity.java:5780)
at androidx.activity.ComponentActivity.startActivityForResult(ComponentActivity.java:712)
at android.app.Activity.startActivityForResult(Activity.java:5738)
at androidx.activity.ComponentActivity.startActivityForResult(ComponentActivity.java:693)
at android.app.Activity.startActivity(Activity.java:6236)
at androidx.core.content.ContextCompat$Api16Impl.startActivity(ContextCompat.java:830)
at androidx.core.content.ContextCompat.startActivity(ContextCompat.java:279)
at com.health.fitness.HealthConnectActions.openSettings(HealthConnectActions.kt:93)
at com.health.fitness.UserAccountSettingsActivity.lambda$onCreate$5$com-health-fitness-UserAccountSettingsActivity(UserAccountSettingsActivity.java:99)
at com.health.fitness.UserAccountSettingsActivity$$ExternalSyntheticLambda6.onClick(D8$$SyntheticClass:0)
at android.view.View.performClick(View.java:8047)
at android.widget.TextView.performClick(TextView.java:17792)
at android.view.View.performClickInternal(View.java:8024)
at android.view.View.-$$Nest$mperformClickInternal(Unknown Source:0)
at android.view.View$PerformClick.run(View.java:31890)
at android.os.Handler.handleCallback(Handler.java:958)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:230)
at android.os.Looper.loop(Looper.java:319)
at android.app.ActivityThread.main(ActivityThread.java:8934)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:588)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1103)
Caused by: android.os.RemoteException: Remote stack trace:
at com.android.server.wm.ActivityTaskSupervisor.checkStartAnyActivityPermission(ActivityTaskSupervisor.java:1390)
at com.android.server.wm.ActivityStarter.executeRequest(ActivityStarter.java:1468)
at com.android.server.wm.ActivityStarter.execute(ActivityStarter.java:1073)
at com.android.server.wm.ActivityTaskManagerService.startActivityAsUser(ActivityTaskManagerService.java:1985)
at com.android.server.wm.ActivityTaskManagerService.startActivityAsUser(ActivityTaskManagerService.java:1844)


Подробнее здесь: https://stackoverflow.com/questions/794 ... p-settings
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»