Wri*_*asu 9 android android-alarms
我的应用程序已在 Google Play 上发布,目前面向 Android 12,是一款闹钟应用程序。在最新版本中,我已使用该SCHEDULE_EXACT_ALARM权限,并根据需要在运行时处理检查和请求该权限。
在检查 Android 13 的行为更改后,我发现有一个新权限USE_EXACT_ALARM,其用例具有非常严格的限制,如此处所列。我的应用程序是一个闹钟应用程序,因此它有资格使用此权限。(使用此权限的一个优点是系统会自动授予它,并且用户无法撤销它。)
我将此权限添加到AndroidManifest.xml文件中并删除了该SCHEDULE_EXACT_ALARM 权限。然而,Android Studio 在该方法上给了我一个 lint 警告alarmManager.setAlarmClock(...):
警告内容如下:
设置精确的警报
setAlarmClock需要SCHEDULE_EXACT_ALARM用户的许可或权限;它适用于用户有意安排在精确时间发生的操作的应用程序,例如闹钟、时钟、日历等。查看有关此权限的 javadoc 以确保您的用例有效。
Android开发者网站表示,我可以选择根据我的用例声明任一权限。然而,Android lint 告诉我,SCHEDULE_EXACT_ALARM无论我是否已经声明过,我都应该声明USE_EXACT_ALARM。
我应该怎么办?关注网站并抑制 lint?
cac*_*acs 17
答案实际上隐藏在USE_EXACT_ALARM许可的文档中:
应用程序需要定位
API Build.VERSION_CODES.TIRAMISU或更高级别才能请求此权限。请注意,设备上只能请求或之一USE_EXACT_ALARM。如果您的应用程序已在较旧的 SDK 上使用,但需要SDK 33 及更高版本,则应使用 max-sdk 属性进行声明,例如:SCHEDULE_EXACT_ALARMSCHEDULE_EXACT_ALARMUSE_EXACT_ALARMSCHEDULE_EXACT_ALARMRun Code Online (Sandbox Code Playgroud)<uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" android:maxSdkVersion="32" />
所以这是一件有条件的事情——如果你年满 33 岁,那么USE_EXACT_ALARM就可以提供,而另一个则根本不会被要求。
| 归档时间: |
|
| 查看次数: |
10131 次 |
| 最近记录: |