当前位置: 首页 > 帮助中心

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

时间:2026-01-31 09:27:35

在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来管理外部存储。


上一篇:sftp服务器文件怎样传输
下一篇:java如何实现mysql主从切换
android
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器
  • 英特尔第五代 Xeon CPU 来了:详细信息和行业反应
  • 由于云计算放缓引发扩张担忧,甲骨文股价暴跌
  • Web开发状况报告详细介绍可组合架构的优点
  • 如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳
  • 美光在数据中心需求增长后给出了强有力的预测
  • 2027服务器市场价值将接近1960亿美元
  • 生成式人工智能的下一步是什么?
  • 分享在外部存储上安装Ubuntu的5种方法技巧
  • 全球数据中心发展的关键考虑因素
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器

    英特尔第五代 Xeon CPU 来了:详细信息和行业反应

    由于云计算放缓引发扩张担忧,甲骨文股价暴跌

    Web开发状况报告详细介绍可组合架构的优点

    如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳

    美光在数据中心需求增长后给出了强有力的预测

    2027服务器市场价值将接近1960亿美元

    生成式人工智能的下一步是什么?

    分享在外部存储上安装Ubuntu的5种方法技巧

    全球数据中心发展的关键考虑因素