【发布时间】:2020-10-05 05:00:27
【问题描述】:
我正在开发一个以编程方式设置时区的旧项目,我正在将此项目迁移到 Api 28,它在 Kitkat 设备上正常工作,但在 Api 28 中,无法授予 SET_TIME_ZONE 权限,因为我知道它变成了系统级权限,不能用于应用。
我已添加此权限
<uses-permission android:name="android.Manifest.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.SET_TIME_ZONE"
tools:ignore="ProtectedPermissions" />
而Activity的onCreate方法看起来是这样的
int permissionCheck = ContextCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE);
if (permissionCheck != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_PHONE_STATE}, 2654);
}
AlarmManager am = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE);
am.setTimeZone("Asia/Tbilisi");
在 Api 28 或更高版本上出现错误
java.lang.SecurityException: Neither user 11029 nor current process has android.permission.SET_TIME_ZONE.
我想保留此功能,您有什么建议我应该使用什么来代替 AlarmManager.setTimeZone() 方法来更改系统时间?
【问题讨论】:
标签: java android timezone alarmmanager android-permissions