随着Android新的权限系统,我想知道如何正确地实现它。关于何时以及如何使用权限的教程似乎非常清晰。然而,我不知道谁请求权限以及在哪里请求。
所以,基本上我的问题是:启动另一个Activity的Activity是否应该事先请求权限,还是需要权限的Activity放置请求?
如果需要权限的Activity应该请求权限,那么我应该在onCreate
或onStart
中调用requestForPermission
吗?
尽管这些问题似乎非常简单,但我在文档中没有找到任何提示。
谢谢。
随着Android新的权限系统,我想知道如何正确地实现它。关于何时以及如何使用权限的教程似乎非常清晰。然而,我不知道谁请求权限以及在哪里请求。
所以,基本上我的问题是:启动另一个Activity的Activity是否应该事先请求权限,还是需要权限的Activity放置请求?
如果需要权限的Activity应该请求权限,那么我应该在onCreate
或onStart
中调用requestForPermission
吗?
尽管这些问题似乎非常简单,但我在文档中没有找到任何提示。
谢谢。
每当您的X任务由于某些“Y”权限而受阻时,才请求权限。在onCreate或onStart方法中请求没有意义。
如果您在Activity开始时请求“Y”权限,则Android M和以下模型之间没有区别。利用Android M的美妙之处。例如,如果您需要存储权限来创建临时文件,则最好在应用程序内部区域即/data/data/your package name/files/中创建临时文件,而不是向用户请求存储权限。总体而言,我的观点是在必须请求“Y”权限之前尽可能地利用这些选项。
关于Activity问题,您的任务必须在某个片段或活动上运行,让该活动处理onRequestPermission结果。
onCreate()
调用requestPermissions()
是安全的。唯一需要注意的是,如果用户在权限对话框在前台时旋转屏幕,您的活动仍然会被销毁和重建,因为它仍然可见。这会导致onCreate()
再次运行,而您不希望再次调用requestPermissions()
--如果这样做,用户将获得两个叠加的权限对话框。通过保存实例状态Bundle
跟踪您的状态。请参阅此示例应用程序。 - CommonsWare