国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Android11 open failed: EACCES (Permission denied)的解決方法

這篇具有很好參考價值的文章主要介紹了Android11 open failed: EACCES (Permission denied)的解決方法。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

以下均用kotlin編寫,沒用過的請酌情參考,方法類似

1、首先Manifest中添加權限

這是Manifest文件的開頭

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">
<!--    必須要加下面兩句-->
    <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

?<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>
?<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

這兩句必須加,但是上面那句會提示這樣不能在谷歌商店上架,我自己編軟件自己用所以不擔心,如果真要商用,建議還是老老實實存私有空間,Android11開始應用好像不能在公共空間操作了,需要用戶手動設置。

2、動態(tài)獲取權限

主Activity的class里定義

private val readRequest = android.Manifest.permission.READ_EXTERNAL_STORAGE

在主Activity中的onCreate的方法中

val readFlag = ActivityCompat.checkSelfPermission(this,readRequest) != PackageManager.PERMISSION_GRANTED
//        var writeFlag = ActivityCompat.checkSelfPermission(this, writeContacts) != PackageManager.PERMISSION_GRANTED
            if(readFlag){
                if(ActivityCompat.shouldShowRequestPermissionRationale(this,readRequest)){
                    //引導用戶打開讀取聯(lián)系人權限
                }

                ActivityCompat.requestPermissions(this,
                    arrayOf(readRequest),
                    100
                )

            }else{
                //getContacts()
            }

這個方法好像就是點開應用提示獲取權限,當然這個權限是只能訪問media文件(我不清楚這是什么類型的文件,就類似MP4格式?)

然后添加獲取權限結果的函數(shù),在onCreate方法外

當然我這里什么都沒干,就彈了個提醒而已

override fun onRequestPermissionsResult(
        requestCode: Int,
        permissions: Array<out String>,
        grantResults: IntArray
    ) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults)

        if (requestCode == 100) {
            if (grantResults.contains(PackageManager.PERMISSION_GRANTED)) {
                if (permissions.contains(readRequest)) {
                    Toast.makeText(this,"成功",Toast.LENGTH_SHORT).show()
                }

            }
        }
    }

好的走到這里已經(jīng)做完了網(wǎng)上搜到的90%的教程了,當然剩下還有什么在Manifest的<application>標簽中添加

android:requestLegacyExternalStorage=“true”

android:preserveLegacyExternalStorage=“true”

之類的都在Android11不管用了,低于11的可以試試。

3、接下來,正常運行代碼,打開應用后進行授權

手機eacces權限被拒絕,android,kotlin,開發(fā)語言

?選擇同意,之后切到后臺,去系統(tǒng)設置進行手動用戶授權

手機eacces權限被拒絕,android,kotlin,開發(fā)語言

手機eacces權限被拒絕,android,kotlin,開發(fā)語言

手機eacces權限被拒絕,android,kotlin,開發(fā)語言

手機eacces權限被拒絕,android,kotlin,開發(fā)語言

手機eacces權限被拒絕,android,kotlin,開發(fā)語言

手機eacces權限被拒絕,android,kotlin,開發(fā)語言

?之后切回app,就能正常使用外部公共空間了!

-----------------------------------------------------------------------------------------------------------------------

如果你看到了這里,那么你應該去看一下評論(不知道后面會不會沒),評論大佬提到了一種Scoped Storage,去搜了一下發(fā)現(xiàn)有大佬詳細解釋了這種特性,

附上鏈接Android 11新特性,Scoped Storage又有了新花樣_"tools:ignore=\"scopedstorage"_guolin的博客-CSDN博客文章來源地址http://www.zghlxwxcb.cn/news/detail-705690.html

里面提到了獲取權限的簡單方法,不需要再像上面那樣手動開啟權限了,代碼如下

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R ||
        Environment.isExternalStorageManager()) {
    Toast.makeText(this, "已獲得訪問所有文件權限", Toast.LENGTH_SHORT).show()
} else {
    val builder = AlertDialog.Builder(this)
        .setMessage("本程序需要您同意允許訪問所有文件權限")
        .setPositiveButton("確定") { _, _ ->
            val intent = Intent(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION)
            startActivity(intent)
        }
    builder.show()
}

親測好用!

到了這里,關于Android11 open failed: EACCES (Permission denied)的解決方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • Linux: Error: EACCES: permission denied Linux 解決方法

    原因:Linux終端創(chuàng)建文件夾無權限。 解決方法:輸入命令 sudo chmod -R 777 /工作目錄 例如: sudo chmode -R 777 /home/HDD sudo:是linux系統(tǒng)管理指令,是允許系統(tǒng)管理員讓普通用戶執(zhí)行一些或者全部的root命令的一個工具。 -R:是指幾連醫(yī)用到目錄里所有子目錄和文件; 777:是指所有用

    2024年02月03日
    瀏覽(32)
  • listen EACCES : permission denied 127.0.0.1:80錯誤解決方法

    listen EACCES : permission denied 127.0.0.1:80錯誤解決方法

    1.listen EACCES : permission denied 127.0.0.1:80錯誤原因? ?端口已被占用,說明有其他項目運行的是80端口 ? 2.終端執(zhí)行命令? netstat -ano? ?查看電腦正在執(zhí)行的任務 ?3.任務管理器結束任務? 找到對應的結束 ?

    2024年02月02日
    瀏覽(97)
  • Android 10以上出現(xiàn)的 android Permission denied 讀寫權限問題解決方法

    原因: 從Android 10 開始,應用即使申請了權限,也只能讀寫自己外部存儲的私有目錄,就是Android/data/對應應用包名 下的相關目目錄。除此之外任何目錄的讀寫都會被拒絕,并提示 android Permission denied。 解決方案 在 AndroidManifest.xml 文件中,在application標簽中添加如下屬性 and

    2024年02月03日
    瀏覽(89)
  • Error: listen EACCES: permission denied

    使用npm run dev 運行vue項目的時候遇到以下錯誤: 如果修改默認的5173端口,嘗試不同端口,可以啟動成功。 具體方法:修改package.json中的dev選項, 如下使用3000端口啟動 使用管理員身份運行PowerShell 停止winnat服務:net stop winnat 啟動winnat服務:net start winnat “winnat” 服務在 Wi

    2024年02月14日
    瀏覽(21)
  • 解決windows11下SSH不能連接遠端服務器-Permission denied (publickey)-Permissions for ‘xxx‘ are too open-管道不存在等問題

    解決windows11下SSH不能連接遠端服務器-Permission denied (publickey)-Permissions for ‘xxx‘ are too open-管道不存在等問題

    按照下面的步驟做一遍。我也搞不清哪些解決方式和哪些問題對應,多試一試就好了。 HostName和User換成對應的名字。 IdentityFile換成對應的密匙文件。 在搜索欄搜索服務: 確認電腦上有這兩個服務: 狀態(tài)和我上面設置的一樣。(記得更改運行狀態(tài)。我設置成正在啟動/自動延

    2024年02月04日
    瀏覽(63)
  • 解決在Mac下使用npm報錯:Error: EACCES: permission denied, mkdir ‘/usr/local/lib/node_modules/@vue‘

    詳細如下: 原因說明:沒有足夠的權限在 /usr/local/lib/node_modules 目錄下創(chuàng)建文件夾 這個錯誤表明你在安裝或更新 Vue.js(@vue)包時,沒有足夠的權限在 /usr/local/lib/node_modules 目錄下創(chuàng)建文件夾。 這通常是因為默認情況下,普通用戶沒有權限在 /usr/local/lib 目錄中進行寫入操作。

    2024年02月08日
    瀏覽(26)
  • 啟動node服務報錯Error: listen EACCES: permission denied 0.0.0.0:5000

    啟動node服務報錯Error: listen EACCES: permission denied 0.0.0.0:5000

    啟動node服務報錯: 解決方案: 將監(jiān)聽端口改成3000或者其他 修改后結果: 參考原文: Error: listen EACCES: permission denied_error when starting dev server: error: listen eacc-CSDN博客

    2024年02月22日
    瀏覽(34)
  • Error: EACCES: permission denied, rename ‘/usr/local/lib/node_modules/appium‘

    Error: EACCES: permission denied, rename ‘/usr/local/lib/node_modules/appium‘

    在使用npm uninstall -g appium卸載appium的過程中報錯 1、首先檢查誰擁有該目錄 它拒絕訪問,因為 node_module 文件夾下的appium歸 root 所有 ? ?因此需要通過將 root 更改為您的用戶來更改此設置,但首先運行下面的命令來檢查您當前的用戶如何通過 OS X 中的命令行獲取活動用戶的名稱

    2024年02月12日
    瀏覽(38)
  • nginx 查看日志 failed (13: Permission denied) 失?。?3:權限被拒絕)解決

    nginx 查看日志 failed (13: Permission denied) 失?。?3:權限被拒絕)解決

    權限被拒絕 用戶不一致: 打開? nginx.conf?文件? ? (一般在? etc/nginx?目錄下) 把? nginx?改為?root 用戶已經(jīng)統(tǒng)一,現(xiàn)在可以正常訪問了 ? ?

    2024年02月15日
    瀏覽(105)
  • failed (13: Permission denied) 解決Nginx由于權限導致大文件不能上傳的問題

    在使用Nginx作為代理服務器時,發(fā)現(xiàn)應用程序可以上傳小文件,但無法上傳大文件。查看Nginx日志,發(fā)現(xiàn)出現(xiàn)了以下錯誤信息: client intended to send too large body 。 要解決這個問題,您可以按照以下步驟進行操作: 打開Nginx的配置文件 nginx.conf 。 在配置文件中的 server 段落中添加

    2024年02月04日
    瀏覽(310)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包