【发布时间】:2018-01-11 15:43:31
【问题描述】:
我正在将应用更新为 Marshmallow,因此我需要考虑用户可以在运行时撤销权限。
我知道当用户打开应用程序时,如果某些权限未启用,则会出现一个对话框,询问这些权限。无论选择哪个选项,都会调用onRequestPermissionsResult。
但是,当用户从设置中禁用权限时,会调用哪个方法?我在应用程序中运行了一项服务,因此如果禁用其中一项权限,我应该停止该服务。有没有办法做到这一点,而无需进入应用程序?
如果需要更多信息,请告诉我!
【问题讨论】:
-
@jignesh 也许我表达得不好。当我从设置中说时,我指的是 androids 设置应用程序。所以用户可以在那里搜索我的应用程序并撤销权限。因此,例如,如果位置权限被撤销,那么我应该停止将 gps 数据发送到数据库的服务。
-
“例如,如果位置权限被撤销,那么我应该停止将 gps 数据发送到数据库的服务”——这会自动发生,因为 Android 会终止您的进程。
-
“在这个新进程中,服务继续运行”——不,它开始运行,如果您使用的是
START_STICKY或START_REDELIVER_INTENT。如果您使用START_NOT_STICKY,我不希望该服务在新进程中启动。旧服务在其进程消失时消失了。只要您的服务在尝试使用该权限保护的内容之前验证它是否拥有该权限,就可以了。如果您不再拥有该权限,请提出Notification以指出您无法再做您的工作。 -
@SantiagoSalem:“那么有没有办法发出通知,告诉用户发生了什么?” -- 直到您的应用由于某种原因再次获得控制权。
标签: android android-service android-6.0-marshmallow runtime-permissions