在谷歌上搜索所有麻烦之后,我已经设法请求存储权限,以使我的应用程序符合"使用android Marshmallow中引入的新权限系统。但是现在,我注意到,我实际上并不需要做出所有努力,因为系统会自动授予权限而无需请求。只是在Manifest中拥有权限就足够了。(在安装ES文件资源管理器或我自己的应用程序时看到)。是否有必要在Android 6 +上申请权限?
这就是我的Manifest.xml的样子:
android:versionCode="100"
android:versionName="1.0.0" >
<uses-sdk android:minSdkVersion="14" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
PS:我使用的是三星Galaxy S7
答案 0 :(得分:2)
我们真的需要请求权限吗?
没有。如果将目标API设置为22或更低(ANdroid 5.x),则不会设置权限系统,因此,在下载应用程序时,用户必须授予下载应用程序的每个权限。
<强> 强>
用户仍然可以撤销&#34; dangerous&#34; -level的任何权限。如果您的应用使用其中任何一种,您也无法要求退回。此外,它会导致崩溃,因为应用程序不会被编程来处理应用程序无法访问权限时发生的情况。
您只需要获得具有危险级别&#34; Dangerous&#34;的权限的许可。 &#34;正常&#34; - 权限自动授予,不能撤销。 Here是您需要提出的危险权限列表。
考虑:
最好是要求权限。这也可以防止在撤消权限时崩溃。即使是针对API 22及更低版本,仍然可以撤消权限,并在您调用需要这些权限的内容时导致问题。
只有在定位API 23并请求权限时,才能控制您的应用。您可以在需要的地方询问权限,如果没有访问权限,您可以阻止功能,并让用户知道该权限的用途,并让用户感觉该权限不会用于恶意内容或隐私侵犯。
如this answer to your question中所述:
是的,我们需要请求用户许可。从Android 6.0(API级别23)开始,用户在应用程序运行时向应用程序授予权限,而不是在安装应用程序时授予权限。
这不是必需的,但是如果你的目标是API 22(Android 5),则在安装应用程序时仍会询问权限。如果针对API 22的应用程序“不兼容”,则不允许安装许多应用程序。使用ANdroid 6.
如果设备运行的是Android 5.1或更低版本,或者您应用的目标SDK为22或更低:如果您在清单中列出了危险权限,则用户必须在安装应用时授予权限;如果他们没有授予权限,系统根本不会安装应用程序。
针对Android 5.x及更低版本的应用仍会在Android 6上以相同方式安装:如果应用针对API 22,则无法允许或禁止安装时的单一权限。权限可以从设置中撤消,但不能阻止任何权限来自安装时的目标API 22。
在ANdroid清单中,您仍需列出所有权限,包括正常和危险。如果应用程序以API 23为目标,则需要Android 5.x及更低版本的所有权限,并在API 23及更高版本上请求(请记住在请求之前检查用户是否在API 23或更高版本上)。
总结:
请求不是必需的。但是,这样做是个好主意,并确保将应用程序设计为仅执行其拥有的权限。因此:您不必请求权限,但这是一个非常好的主意。
定位API 23时,不会自动授予任何权限。你必须要求他们。在定位API 22时,会自动授予权限,并在用户安装应用时同意。
另请注意:
Android正在快速发展。 Android 7(API 24和25)也使用权限系统。在几年内,所有Android设备都可以在权限系统上运行,此时将权限系统集成到您的应用程序中是一个好主意。
答案 1 :(得分:1)
是的,我们需要请求用户许可。 从Android 6.0(API级别23)开始,用户在应用程序运行时向应用程序授予权限,而不是在安装应用程序时。此方法简化了应用安装过程,因为用户在安装或更新应用时无需授予权限。它还使用户可以更好地控制应用程序的功能;例如,用户可以选择让相机应用程序访问相机,但不能访问设备位置。用户可以随时转到应用程序的“设置”屏幕来撤消权限。
系统权限分为两类:普通和危险:
普通权限不会直接影响用户的隐私。如果您的应用在其清单中列出了正常权限,系统会自动授予权限。
危险权限可让应用访问用户的机密数据。如果您的应用在其清单中列出了正常权限,系统会自动授予权限。如果您列出了危险权限,则用户必须明确批准您的应用。
但是,根据系统版本和应用的目标SDK级别,该声明的效果会有所不同:
如果设备运行的是Android 5.1或更低版本,或者您应用的目标SDK为22或更低:如果您在清单中列出了危险权限,则用户必须在安装应用时授予权限;如果他们没有授予权限,系统根本不会安装应用程序。
如果设备运行的是Android 6.0或更高版本,并且您应用的目标SDK为23或更高:应用必须列出清单中的权限,并且必须在应用时请求其所需的每个危险权限在跑。用户可以授予或拒绝每个权限,即使用户拒绝权限请求,应用也可以继续以有限的功能运行。