android 检查 write_external_storage,android – 如何知道何时需要WRITE_EXTERNAL_STORAGE

当您的应用程序需要写入外部存储时,您可以看到

here只需要请求

WRITE_EXTERNAL_STORAGE.

但:

Starting in API level 19,this permission is not required to

read/write files in your application-specific directories returned by

getExternalFilesDir(String) and getExternalCacheDir().

首先,我建议您避免使用Intents请求权限,因为这是一种最佳实践,可以提高用户体验.

如果您不能使用Intent来避免使用您的应用程序进行编写,并且您知道有一天用户必须在外部编写,我认为更好的方法是在用户第一次“写入”时请求权限外部存储“路径.

据我所知,在API23中你只需要一次请求权限,所以我认为最简单的方法是在用户第一次要求权限时请求权限,我想当他执行时再一次,权限将继续被接受.您可以使用显示的程序here检查授予的权限.

Here你可以看到:

The user is prompted to give permission once,either at run time or at install time (depending on the user’s Android version). After that,your app can perform the operation without requiring additional interaction from the user. However,if the user doesn’t grant the permission (or revokes it later on),your app becomes unable to perform the operation at all.

Android开发中,`android.permission.WRITE_EXTERNAL_STORAGE`是一个权限声明,它允许应用程序在设备的外部存储上写入数据。外部存储可以是SD卡或其他形式的可移动存储,也可以是设备的内部存储空间,这取决于Android版本以及用户的设备配置。 自Android 6.0(API级别23)开始,引入了运行时权限模型,用户可以在应用程序运行时授予或拒绝权限。为了申请`WRITE_EXTERNAL_STORAGE`权限,应用程序需要在运行时向用户请求这个权限,并且处理用户的响应。以下是申请该权限的基本步骤: 1. 在应用的`AndroidManifest.xml`文件中声明权限: ```xml <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> ``` 2. 检查并请求权限(通常在需要写入外部存储的Activity或Fragment中): ```java // 检查是否已经授予了写入权限 if (ContextCompat.checkSelfPermission(thisActivity, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { // 如果未授予,则请求权限 ActivityCompat.requestPermissions(thisActivity, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, MY_PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE); } else { // 权限已经被授予,执行需要权限的代码 } ``` 3. 处理用户响应: ```java @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (requestCode == MY_PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE) { if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { // 权限被用户同意,可以写入外部存储 } else { // 权限被用户拒绝,应通知用户没有权限将无法执行某些操作 } } } ``` 在实现权限请求时,确保遵循Android的设计指南,如提供适当的权限解释,以及优雅地处理权限被拒绝的情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值