1. 程式人生 > >關於華為手機讀取SD卡許可權沒用記錄一下

關於華為手機讀取SD卡許可權沒用記錄一下

一般來說,android開發要獲取手機許可權的時候只需要在AndroidManifest.xml中新增許可權程式碼即可,例如"
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.FLASHLIGHT" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-feature android:name="android.hardware.camera" />
    <uses-feature android:name="android.hardware.camera.autofocus" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />

但是 ,對於華為手機 一招就不行了, 我這邊需要一個小功能,就是拍照 上傳圖片到伺服器,然後在其他介面進行顯示, 拍照的程式碼就不帖了,只是這個在上傳圖片的時候就會提示上傳失敗,提示原因:" open failed: EACCES (Permission denied)" 什麼意思呢,就是開啟失敗許可權被拒絕,最好找了半天,華為這個系統讀取SD卡需要在你請求哪個類中把這個許可權直接用java程式碼來新增 不多說了 直接貼程式碼記錄下

定義變數

    private static final int REQUEST_EXTERNAL_STORAGE = 1;
    private static String[] PERMISSIONS_STORAGE = {
            Manifest.permission.READ_EXTERNAL_STORAGE,
            Manifest.permission.WRITE_EXTERNAL_STORAGE
    };
在onCreate方法下面新增下列程式碼即可
        int permission = ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE);
        if (permission != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(
                    this,
                    PERMISSIONS_STORAGE,
                    REQUEST_EXTERNAL_STORAGE
            );
        }

親測有用 記錄一下