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


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


上一篇:linux怎么看服务器时间

下一篇:android external如何进行外部存储监控


android
Copyright © 2002-2019 测速网 www.inhv.cn 皖ICP备2023010105号
测速城市 测速地区 测速街道 网速测试城市 网速测试地区 网速测试街道
温馨提示:部分文章图片数据来源与网络,仅供参考!版权归原作者所有,如有侵权请联系删除!

热门搜索 城市网站建设 地区网站制作 街道网页设计 大写数字 热点城市 热点地区 热点街道 热点时间 房贷计算器