Android 应用权限两种做法优缺点比较


通常, Android 应用权限有两种使用方法可供选择:


  • 应用可以要求提供权限来自行执行该任务 … 【方法1】
  • 也可以使用 intent 让其他应用执行该任务 … 【方法2】

【方法1 适用情景】:假设应用需要使用设备摄像头才能够拍摄照片。应用可以请求 CAMERA 权限,以便允许应用直接访问摄像头。然后,应用将使用摄像头 API 控制摄像头并拍摄照片。此方法使应用能够完全控制拍摄过程,并且您可以将摄像头界面整合到应用中。


【方法2 适用情景】:如果每次您需要访问时都向用户显示运行时对话框,这种中断操作并非不可接受,那么您可以使用基于 intent 的请求。Android 提供了一些系统 intent,借助这些 intent,应用无需请求权限,因为在发出基于 intent 的请求时用户会选择与应用共享的内容(如果有)。例如,您可以使用 intent 操作类型 MediaStore.ACTION_IMAGE_CAPTURE 或 MediaStore.ACTION_VIDEO_CAPTURE 来拍摄图像或视频,而无需直接使用 Camera 对象(或请求权限)。在这种情况下,每次拍摄图像时,系统 intent 都会代表您请求用户提供权限。同样,如果您需要拨打电话、访问用户的联系人或执行其他操作,您可以通过创建适当的 intent 来完成,也可以直接请求权限并访问相应的对象。


【方法1】 和 【方法2】 优缺点比较:


方法1(使用权限):

  • 当您执行操作时,您的应用可以完全控制用户体验。
    不过,如此广泛的控制会增加代码的复杂性,您需要设计适当的界面。

  • 系统会在运行时或安装时(具体取决于用户的 Android 版本)提示用户授予权限一次。
    之后,应用即可执行操作,不再需要用户进行其他互动。不过,如果用户未授予权限(或之后撤消权限),则应用将根本无法执行操作。


方法2(使用 intent):

  • 您不必为操作设计界面,处理 intent 的应用将提供界面。
  • 用户可以使用他们首选的应用执行任务。例如,用户可以选择用他们喜爱的照片应用拍照。如果用户没有适用于操作的默认应用,则系统会提示用户选择一款应用。如果用户未指定默认处理程序,则他们每次执行此操作时都可能必须处理一个额外的对话框。

摘自:https://developer.android.google.cn/training/permissions/usage-notes


猜你喜欢

转载自blog.csdn.net/weixin_44769108/article/details/88670111