您的位置:宽带测速网 > 网络知识 > android external如何设置外部存储权限

android external如何设置外部存储权限

2025-06-16 12:27来源:互联网 [ ]

在Android中,为应用设置外部存储权限通常涉及以下几个步骤:

    AndroidManifest.xml中声明必要的权限:首先,你需要在AndroidManifest.xml文件中声明读取和写入外部存储的权限。

    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

    对于Android 6.0(API级别23)及以上版本,还需要在运行时请求这些权限。

    检查并请求权限:在运行时检查应用是否已经获得了所需的权限。如果没有,则请求用户授予这些权限。

    以下是一个示例代码,展示了如何在Activity中检查并请求权限:

    import android.Manifest;import android.content.pm.PackageManager;import androidx.annotation.NonNull;import androidx.appcompat.app.AppCompatActivity;import androidx.core.app.ActivityCompat;import androidx.core.content.ContextCompat;public class MainActivity extends AppCompatActivity {private static final int PERMISSION_REQUEST_CODE = 1001;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 检查权限checkPermissions();}private void checkPermissions() {if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED ||ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {// 请求权限ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE}, PERMISSION_REQUEST_CODE);} else {// 权限已经授予// 可以执行相关操作}}@Overridepublic void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {super.onRequestPermissionsResult(requestCode, permissions, grantResults);if (requestCode == PERMISSION_REQUEST_CODE) {if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED && grantResults[1] == PackageManager.PERMISSION_GRANTED) {// 权限已经授予// 可以执行相关操作} else {// 权限被拒绝// 提示用户Toast.makeText(this, "需要存储权限才能使用外部存储功能", Toast.LENGTH_SHORT).show();}}}}

    使用外部存储:一旦获得了必要的权限,你就可以使用Environment.getExternalStorageDirectory()来访问外部存储,或者使用其他API来读写文件。

    以下是一个简单的示例,展示了如何在外部存储中创建一个文件:

    import android.os.Environment;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;public class MainActivity extends AppCompatActivity {private static final String DIRECTORY_NAME = "MyAppFiles";private static final String FILE_NAME = "example.txt";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);File directory = new File(Environment.getExternalStorageDirectory(), DIRECTORY_NAME);if (!directory.exists()) {directory.mkdirs();}File file = new File(directory, FILE_NAME);try (FileOutputStream fos = new FileOutputStream(file)) {fos.write("Hello, World!".getBytes());Toast.makeText(this, "文件已保存到外部存储", Toast.LENGTH_SHORT).show();} catch (IOException e) {e.printStackTrace();}}}

请注意,从Android 10(API级别29)开始,对外部存储的访问方式发生了变化,引入了分区存储(Scoped Storage)。如果你的应用目标API级别是29及以上,建议使用分区存储API来管理外部存储。