Android 在访问设备的外部存储时,默认是没有权限的。为了获取外存储的读写权限,需要在 AndroidManifest.xml 文件中添加以下权限:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
在较新版本的 Android(6.0 及以上)中,还需要在代码中动态申请权限。可以使用以下代码来请求权限:
// 检查是否已经获得权限
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.READ_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
// 请求权限
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
PERMISSION_REQUEST_CODE);
}
在请求权限后,需要实现 onRequestPermissionsResult 方法来处理用户的权限响应:
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == PERMISSION_REQUEST_CODE) {
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// 用户授予了权限,可以进行读写操作
} else {
// 用户拒绝了权限,无法进行读写操作
}
}
}
在获取到权限后,就可以使用 File 类或者 Environment.getExternalStorageDirectory() 方法访问外存储了。
需要注意的是,在使用外存储权限时,应遵循 Android 官方的最佳实践,避免在 UI 线程中进行耗时的读写操作,以免影响用户体验。同时,还需要注意权限的合理使用,不要过多地请求用户的权限,以防用户对应用的不信任。
在Android中,要访问及使用外部存储卡的权限,需要在AndroidManifest.xml文件中添加以下权限:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
其中,READ_EXTERNAL_STORAGE
权限允许应用程序读取外部存储设备上的文件。WRITE_EXTERNAL_STORAGE
权限允许应用程序向外部存储设备写入文件。
请注意,从Android 11(API级别30)开发中,应用默认无法直接访问外部存储。如果您的应用需要访问外部存储,请在manifest文件中添加以下标记,并请求用户授权:
<application
android:requestLegacyExternalStorage="true"
...>
授权外部存储权限可以通过以下代码片段实现:
final int REQUEST_EXTERNAL_STORAGE = 1;
String[] PERMISSIONS_STORAGE = {
android.Manifest.permission.READ_EXTERNAL_STORAGE,
android.Manifest.permission.WRITE_EXTERNAL_STORAGE
};
// 当API级别大于等于23(Android 6.0)时,需要动态请求权限
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
int permission = ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE);
if (permission != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, PERMISSIONS_STORAGE, REQUEST_EXTERNAL_STORAGE);
}
}
在onRequestPermissionsResult()
方法中,您可以处理权限请求的结果:
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == REQUEST_EXTERNAL_STORAGE) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// 权限被授予,可以使用外部存储
} else {
// 权限被拒绝,无法使用外部存储
}
}
}
发布者:luotuoemo,转转请注明出处:https://www.jintuiyun.com/142258.html