• Android获取系统读取权限


    第一步在Androidifest.xml文件中加上授权语句

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

    并且在Application标签下添加 android:requestLegacyExternalStorage=“true”

     android:requestLegacyExternalStorage="true"
    
    • 1

    如果不加这条语句,会报错:open failed: EACCES (Permission denied)
    详情见如下图:
    在这里插入图片描述

    第二步在Activity中添加动态授权语句

    详细代码如下:

    
    import androidx.annotation.NonNull;
    import androidx.appcompat.app.AppCompatActivity;
    import androidx.core.app.ActivityCompat;
    
    import android.Manifest;
    import android.annotation.SuppressLint;
    import android.content.pm.PackageManager;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.os.Build;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.ImageView;
    
    public class MainActivity extends AppCompatActivity {
        //请求码
        private static String[] PERMISSIONS_STORAGE = {
                Manifest.permission.READ_EXTERNAL_STORAGE,
                Manifest.permission.WRITE_EXTERNAL_STORAGE};
        //请求状态码
        private static int REQUEST_PERMISSION_CODE = 1;
        @SuppressLint("MissingInflatedId")
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            /*获取读写权限*/
            if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) {
                if (ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
                    ActivityCompat.requestPermissions(this, PERMISSIONS_STORAGE, REQUEST_PERMISSION_CODE);
                }
            }
        }
        @Override
        public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
            super.onRequestPermissionsResult(requestCode, permissions, grantResults);
            if (requestCode == REQUEST_PERMISSION_CODE) {
                for (int i = 0; i < permissions.length; i++) {
                    Log.i("MainActivity", "申请的权限为:" + permissions[i] + ",申请结果:" + grantResults[i]);
    
                }
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47

    在这里插入图片描述

  • 相关阅读:
    云之后,亚马逊云科技要为业界提供水和空气一样的安全防护
    UE4C++学习篇(十八)-- SceneCaptureComponent组件处理小地图
    C语言第十八弹---多个字符从两端移动向中间汇聚
    阿里云产品经理刘宇:Serverless 的前世今生
    【数据库高级】Mysql窗口函数的使用和练习
    C++ 运算符重载
    格蠹汇编阅读理解
    仿游戏热血江湖游戏类31
    国内AI大赛汇总
    Vue中常用的rules校验规则
  • 原文地址:https://blog.csdn.net/qq_44255741/article/details/132809418