1. 程式人生 > >Android程式報錯:Anroid 6.0 許可權問題java.io.FileNotFoundException: ……:open failed: EACCES (Permission denied)

Android程式報錯:Anroid 6.0 許可權問題java.io.FileNotFoundException: ……:open failed: EACCES (Permission denied)

異常

java.io.FileNotFoundException: /storage/emulated/0/Video/ekwing_main_paren.apk(你的檔案路徑): open failed: EACCES (Permission denied)

原因

Android 6.0 中,有些許可權屬於 Protected Permission,這類許可權只在 AndroidManifest.xml中宣告是無法真正獲取到的,還需要再程式碼中動態獲取,使許可權許可彈出對話方塊,使用者點選“允許”後,方可真正獲得此許可權。

解決方法一

在程式碼中新增以下程式碼,如下

/**
         * 動態獲取許可權,Android 6.0 新特性,一些保護許可權,除了要在AndroidManifest中宣告許可權,還要使用如下程式碼動態獲取
         */
        if (Build.VERSION.SDK_INT >= 23) {
            int REQUEST_CODE_CONTACT = 101;
            String[] permissions = {Manifest.permission.WRITE_EXTERNAL_STORAGE};
            //驗證是否許可許可權
            for (String str : permissions) {
                if (this.checkSelfPermission(str) != PackageManager.PERMISSION_GRANTED) {
                    //申請許可權
                    this.requestPermissions(permissions, REQUEST_CODE_CONTACT);
                    return;
                }
            }
        }

解決方法二

如果不寫以上程式碼,還可以用另外一種簡單簡單粗暴的方式:直接在6.0的設定裡面找到應用,選中你的APP->許可權->開啟儲存空間許可權

相關推薦

Android程式Anroid 6.0 許可權問題java.io.FileNotFoundException: ……:open failed: EACCES (Permission denied)

異常 java.io.FileNotFoundException: /storage/emulated/0/Video/ekwing_main_paren.apk(你的檔案路徑): open fai

Android java.io.FileNotFoundException: open failed: EACCES (Permission denied)

    在讀寫Android SD卡時,出現這個錯誤的原因是因為沒有許可權。解決步驟如下: 確定你的App的AndroidManifest.xml檔案中寫有SD卡讀寫許可權,這是必須的:<us

Android程式程式包org.apache.http不存在——Android 6.0已經不支援HttpClient

Android Studio 2.1中使用 Android SDK 6.0(API 23),載入融雲Demo時,報錯: 解決辦法: 1、eclipse libs中加入 org.apache.h

caused by android.system.errnoexception open failed eacces (permission denied)解決方案,安卓6.0(API23)許可權問題

在API23+以上,不止要在AndroidManifest.xml裡面新增許可權 1 <uses-permission android:name="android.permission.REA

【解決】Centos 6.2 yum updatelibotf.so.0

當在Centos6.2執行yum update時,報錯如下: Setting up Update ProcessResolving Dependencies--> Running transaction check---> Package openmpi.x8

Android開發android studio Failed to resolve: com.android.support.constraint:constraint-layout:1.0.

情景:在build.gradle檔案新增下面程式碼 compile 'com.android.support.constraint:constraint-layout:1.0.0-beta4' 點選“Sync now”後報錯: Failed to resolve:co

SQL c# 程式未在本地計算機上註冊“Microsoft.Jet.OLEDB.4.0”提供程式

報錯:未在本地計算機上註冊“Microsoft.Jet.OLEDB.4.0”提供程式。System.Data 需要注意的問題和解決方法: 1.Microsoft.Jet.OLEDB.4.0不要寫成Miscrosoft.Jet.OLEDB.4.0,; 2.Data Source不要

MyEclipse 上執行程式Unsupported major.minor version 51.0(jdk版本錯誤)

Win10+MyEclipse10環境下,部署可執行專案原始檔,需要根據開發開發時使用的JDK版本重新引入jar包: 步驟:①在對應專案上右鍵選擇Build Path——>Configure Bulid Path…,點選Libraries,查詢並替換帶紅叉的jar包(通過Add E

Android StudioAndroid studio 3.0 com.android.builder.dexing.DexArchiveMergerException

解決辦法,遇到這個問題很有可能是你在新版的AS中(3.0以上)引入了最新的ButterKnife(8.8.1), 如果你看到以下錯誤: 合併Dex程式型別時出現錯誤: android.support.

nginx端口占用,啟動bind() to 0.0.0.0:80 failed (10013: An attempt was made to access a ........)

今天在自學Nginx的時候,啟動Windows版本的Nginx時候發現了[emerg] 4276#4280: bind() to 0.0.0.0:80 failed(10013: An attempt was made to access a socket in a way forbidd

【已解決!】spark程式java.lang.IndexOutOfBoundsException: toIndex = 9

該篇文章意於記錄報錯,也給遇到相同問題的小夥伴提供排錯思路!但是本人也沒有什麼好的解決方法,如果有,我會更新此文章 問題已經解決,請大家拉到最下面↓↓↓↓↓ 記錄下報錯: 寫了段spark程式碼,然後報錯了 2018-07-30 17:19:28,854 WARN [task-re

微信小程式id 屬性值格式錯誤。如不能以數字開頭。

出現這個報錯時,相信很多人都排除過自己標籤上寫的id是否有以數字命名的,如果你排除了發現並沒有,但是這個報錯還是存在,那麼我接下來分享的這個情況或者能報到你 這次我也遇到這個報錯,最終找出問題所在 這裡的scroll-into-view屬性是scroll-view元件中的,這裡涉及到錨點知

Java開發HBase程式HADOOP_HOME or hadoop.home.dir are not set.

Java開發HBase程式報錯:HADOOP_HOME or hadoop.home.dir are not set. 1.報錯 16:36:44.271 [main] DEBUG org.apache.hadoop.util.Shell - Failed to detect a

Linux使用yum命令安裝軟體時,連線不了網路ERROR 6 - "Couldn't resolve host 'mirrorlist.centos.org'"

錯誤: 解決方案: 在/etc/sysconfig/network-scripts/ifcfg-eth0檔案中配置DNS資訊: vim /etc/sysconfig/network-scripts/ifcfg-eth0 # 進入檔案編輯 修改(新增DNS): DNS1=8.8.

AspectJerror at ::0 can't find referenced pointcut XXX

概述 在Spring boot專案中,使用Aspectj實現AOP面向切面程式設計,以處理一些請求日誌或者對某些方法進行一些監控的時候,報了【can't find referenced pointcut】的錯誤。 報錯資訊如下: Initialization of bean failed; nest

VS中C++程式應輸入宣告

在程式碼編寫的過程中,VS報錯:“應輸入宣告”。 比如在“if”或者一個已經定義好的變數下面有錯誤的紅線出現,滑鼠挪上去之後,就會顯示“應輸入宣告”。 1、前面有用“//”註釋資訊 //D:test\object\ int a = 1; 在一行註釋的最後有一個右斜槓,有可能系統將

部署php程式站點已關閉

場景: 之前把公司線上的php原始碼包拿到筆記本的虛擬機器上測試部署,部署完成後通過瀏覽器訪問總是出現站點已關閉 原因:把線上php程式配置檔案config.php裡面的資料庫連線資訊改成了筆記本虛擬機器的資料庫連線資訊,所有報錯 解決:把config.php裡面的資料庫連線資訊 重新改回來即可,就是說拿

android studio Failed to load AppCompat ActionBar with unknown error

最近開始學Android Studio,但在第一次編寫介面的時候就遇到了問題,問題表現為新增Button之後,介面並未顯示,並且丟擲了錯誤和警告: 在Stack Overflow 上找到的解決方案:

[go error] Go 程式using unaddressable value

一般出現 using unaddressable value 錯誤,表示傳遞的指標值不對,比如需要傳遞指標地址的,但是傳了值。例子:func main() { db, _ := gorm.Open("mysql", "myproject:[email protected]/myproject?

Android StudioWrite access is allowed from event dispatch thread only

新安裝的android studio 編譯工程時出現了Write access is allowed from event dispatch thread only 的錯誤。 在stackoverflow中發現答案: So the problem was con