欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android創(chuàng)建文件時(shí)出現(xiàn)java.io.IOException:?Operation?not?permitted異常的解決方法

 更新時(shí)間:2023年05月30日 11:45:02   作者:老杜_(tái)d  
最近使用android10創(chuàng)建文件失敗,并拋出權(quán)限異常,這篇文章主要給大家介紹了Android創(chuàng)建文件時(shí)出現(xiàn)java.io.IOException:?Operation?not?permitted異常的解決方法,需要的朋友可以參考下

一、android 6.0

6.0之前是不需要?jiǎng)討B(tài)申請(qǐng)權(quán)限的,直接在manifest.xml中申請(qǐng)即可以正常使用。

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

二、安卓10,SDK=29

安卓10開始,安卓繼續(xù)加強(qiáng)了限制,如果需要讀寫SD卡,還需要額外的進(jìn)行申請(qǐng)requestLegacyExternalStorage申明。

<application
        android:name=".common.base.BaseApplication"
        android:allowBackup="true"
        android:icon="@mipmap/logo"
        android:label="@string/app_name"
        android:largeHeap="true"
        android:requestLegacyExternalStorage="true" //添加這一行
        android:roundIcon="@mipmap/logo"
        android:supportsRtl="true"
        android:theme="@style/AppTheme"
        android:usesCleartextTraffic="true"
        tools:replace="android:icon,android:roundIcon">

三、安卓11,SDK=30

安卓11的時(shí)候繼續(xù)強(qiáng)化對(duì)SD卡讀寫的管理,引入了MANAGE_EXTERNAL_STORAGE權(quán)限,而之前的WRITE_EXTERNAL_STORAGE已經(jīng)失效了。

并且MANAGE_EXTERNAL_STORAGE權(quán)限只能跳轉(zhuǎn)設(shè)置頁面申請(qǐng)。

四、安卓13,SDK=33

android 13上,取消了android.permission.WRITE_EXTERNAL_STORAGE權(quán)限,只需要申android.permission.MANAGE_EXTERNAL_STORAGE權(quán)限。

以下是我遇到的問題分析:

創(chuàng)建文件時(shí),一直報(bào)Operation not permitted異常,沒有權(quán)限。但是我在代碼里把以上權(quán)限完全開啟了。而且android 11雖然開啟了強(qiáng)制分區(qū)存儲(chǔ),但是只針對(duì) targetSDK>=30的情況,而我的應(yīng)用targetSDK版本為29。

后來發(fā)現(xiàn)是我的文件名使用當(dāng)前時(shí)間來命名(2023-2-10 15:38:45),而當(dāng)前時(shí)間里帶有 “:”,導(dǎo)致文件創(chuàng)建權(quán)限不足。

許多的字符都屬于公共空間文件的不合法字符(如上圖),但是在私有空間是沒有這個(gè)問題的??赡苁怯捎谠诠锌臻g和私有空間訪問走的是兩套機(jī)制。公有空間會(huì)走M(jìn)ediaStore,私有空間并不會(huì)。

我們?cè)赼ndroid 11系統(tǒng)的手機(jī)上,手動(dòng)創(chuàng)建文件時(shí),文件名也不能包含這些字符。android 10 之前就沒有發(fā)現(xiàn)這個(gè)問題。

所以問題的解決方法有兩種:

1、把文件放到私有空間(即內(nèi)存)中

2、修改文件名,避免特殊字符

總結(jié)

到此這篇關(guān)于Android創(chuàng)建文件時(shí)出現(xiàn)java.io.IOException: Operation not permitted異常解決的文章就介紹到這了,更多相關(guān)java.io.IOException: Operation not permitted異常內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論