java.lang.SecurityException:用户11029和当前进程都没有android.permission.SET\u时区

java.lang.SecurityException:用户11029和当前进程都没有android.permission.SET\u时区,java,android,timezone,alarmmanager,android-permissions,Java,Android,Timezone,Alarmmanager,Android Permissions,我正在处理一个旧项目,该项目以编程方式设置时区,我正在将此项目迁移到Api 28,它在Kitkat设备上正常工作,但在Api 28中,无法授予设置时区权限,因为我知道它已成为系统级权限,无法用于应用程序 我已添加此权限 <uses-permission android:name="android.Manifest.permission.READ_PHONE_STATE"/> <uses-permission android:name="android.permission.SE

我正在处理一个旧项目,该项目以编程方式设置时区,我正在将此项目迁移到Api 28,它在Kitkat设备上正常工作,但在Api 28中,无法授予设置时区权限,因为我知道它已成为系统级权限,无法用于应用程序

我已添加此权限

<uses-permission android:name="android.Manifest.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.SET_TIME_ZONE"
    tools:ignore="ProtectedPermissions" />
以及在Api 28或更高版本上获取错误

java.lang.SecurityException: Neither user 11029 nor current process has android.permission.SET_TIME_ZONE.

我想保留此功能,您有什么建议我应该使用什么来代替AlarmManager.setTimeZone()方法来更改系统时间?

提示选择时区。如果您需要用户选择特定的时区,请在打开设置活动以提示用户之前给出一条带有说明的消息。选择后,然后,您可以检查系统时区是否符合预期,并采取任何措施

startActivity(new Intent(android.provider.Settings.ACTION_DATE_SETTINGS));

我不想让用户更改时区,这就是我在活动中将时区设置为特定城市的原因。目前,没有更改时区的方法,您可以选择显示一个对话框或带有设置所需时区说明的内容,然后单击“确定”按钮,打开时区设置。当用户返回应用程序时,检查用户设置的时区并阻止应用程序的进度,直到用户设置了您想要的时区(如果未设置)。
startActivity(new Intent(android.provider.Settings.ACTION_DATE_SETTINGS));