androidQ 關(guān)于存儲(chǔ)權(quán)限相冊(cè)圖片

關(guān)于存儲(chǔ)位置

內(nèi)部存儲(chǔ)(Internal Storage)

//路徑:(data/data/packageName/cache)
getCacheDir()

//路徑:(data/data/packageName/files)
getFilesDir()

外部存儲(chǔ)(External Storage)

(1)公共文件(目錄)

//路徑:/storage/emulated/0(SD卡的根目錄姑躲,Q及以上不支持使用)
Environment.getExternalStorageDirectory()

(2)私有文件(目錄)

//路徑:/storage/emulated/0/Android/data/packageName/files
getApplicationContext().getExternalFilesDir("") 比如圖片getExternalFilesDir(Environment.DIRECTORY_PICTURES)
android系統(tǒng)可通過(guò)Environment.getExternalStorageDirectory()獲取存儲(chǔ)卡的路徑厅缺,但是現(xiàn)在有很多手機(jī)內(nèi)置有一個(gè)存儲(chǔ)空間啊掏,同時(shí)還支持外置sd卡插入,這樣通過(guò)Environment.getExternalStorageDirectory()方法獲取到的就是內(nèi)置存儲(chǔ)卡的位置

 public static final String[] STANDARD_DIRECTORIES = {
            DIRECTORY_MUSIC,
            DIRECTORY_PODCASTS,
            DIRECTORY_RINGTONES,
            DIRECTORY_ALARMS,
            DIRECTORY_NOTIFICATIONS,
            DIRECTORY_PICTURES,
            DIRECTORY_MOVIES,
            DIRECTORY_DOWNLOADS,
            DIRECTORY_DCIM,
            DIRECTORY_DOCUMENTS,
            DIRECTORY_AUDIOBOOKS,
    };

路徑:/storage/emulated/0/Android/data/應(yīng)用包名/cache
getApplicationContext().getExternalCacheDir() ;

擴(kuò)展

1泌枪、清除緩存
會(huì)清除data/data/packageName/cache 和 /storage/emulated/0/Android/data/packageName/cache路徑的數(shù)據(jù)卡睦。

2、清除數(shù)據(jù)
會(huì)清除data/data/packageName/ 和 /storage/emulated/0/Android/data/packageName/ 路徑下的所有數(shù)據(jù)。

androidQ 權(quán)限存儲(chǔ)變更

Android Q在外部存儲(chǔ)設(shè)備中為每個(gè)應(yīng)用提供一個(gè)“隔離存儲(chǔ)沙盒”班套,即應(yīng)用私有文件夾,里面存儲(chǔ)該應(yīng)用的私有數(shù)據(jù)故河,并且訪(fǎng)問(wèn)這個(gè)文件夾不需要權(quán)限吱韭,外部應(yīng)用無(wú)法訪(fǎng)問(wèn)該文件夾,官方推薦的應(yīng)用在沙盒沒(méi)的存儲(chǔ)文件的地址為Context.getExternalFilesDir()下的文件夾
如果要訪(fǎng)問(wèn)系統(tǒng)媒體權(quán)限要使用MediaStore訪(fǎng)問(wèn)鱼的,訪(fǎng)問(wèn)系統(tǒng)下載文件 未做限制
當(dāng)targetSdk<=P并且設(shè)備是從P升級(jí)到Q的時(shí)候理盆,將開(kāi)啟兼容模式,不開(kāi)啟Q中的存儲(chǔ)權(quán)限變更凑阶;但是當(dāng)應(yīng)用重新安裝(更新)時(shí)猿规,不會(huì)重新開(kāi)啟兼容模式,存儲(chǔ)權(quán)限變更將生效

獲取bitmap

        try {
            ParcelFileDescriptor  parcelFileDescriptor = mContext.getContentResolver().openFileDescriptor(mInputUri, "r");
            //TODO
            bitmap= BitmapFactory.decodeFileDescriptor(fileDescriptor, null, options);
         } catch (FileNotFoundException e) {
            //TODO
        }

獲取InputStream

   InputStream inputStream = null;
        try {
            if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q){
                AssetFileDescriptor assetFileDescriptor = mContext.getContentResolver().openAssetFileDescriptor(inputUri,"r");
                if(assetFileDescriptor != null){
                    inputStream = assetFileDescriptor.createInputStream();
                }
//                inputStream = mContext.getContentResolver().openInputStream(inputUri);
            }else {
                inputStream = mContext.getContentResolver().openInputStream(inputUri);
            }
          
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) + File.separator 

如果保存了 但是相冊(cè)里沒(méi)有
sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + fileName)));
可以直接獲取picture的目錄并對(duì)其操作

適配思路:
判斷其類(lèi)型宙橱,是否需要展示在公共相冊(cè)姨俩,如果是在公共相冊(cè)那么刪除需要用戶(hù)的授權(quán),如果只是作為app內(nèi)部使用师郑,比如一個(gè)暫時(shí)需要的文件(我們將對(duì)其修改刪除的)使用私有文件目錄环葵。
如果之前有在menifest文件中添加android:requestLegacyExternalStorage="true",要記得刪除

Android 10分區(qū)存儲(chǔ)介紹及百度APP適配實(shí)踐
Android Q版本適配
Android Q(10) 文件存儲(chǔ)適配
Android Q私有目錄與公共目錄文件的交互(讀取宝冕,復(fù)制张遭,保存等)
【Android】安卓Q適配指南-相冊(cè)
Demo.AvatarActivity

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市地梨,隨后出現(xiàn)的幾起案子菊卷,更是在濱河造成了極大的恐慌,老刑警劉巖湿刽,帶你破解...
    沈念sama閱讀 217,542評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件的烁,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡诈闺,警方通過(guò)查閱死者的電腦和手機(jī)渴庆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)雅镊,“玉大人襟雷,你說(shuō)我怎么就攤上這事∪逝耄” “怎么了耸弄?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,912評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀(guān)的道長(zhǎng)卓缰。 經(jīng)常有香客問(wèn)我计呈,道長(zhǎng)砰诵,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,449評(píng)論 1 293
  • 正文 為了忘掉前任捌显,我火速辦了婚禮茁彭,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘扶歪。我一直安慰自己理肺,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布善镰。 她就那樣靜靜地躺著妹萨,像睡著了一般。 火紅的嫁衣襯著肌膚如雪炫欺。 梳的紋絲不亂的頭發(fā)上乎完,一...
    開(kāi)封第一講書(shū)人閱讀 51,370評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音竣稽,去河邊找鬼囱怕。 笑死,一個(gè)胖子當(dāng)著我的面吹牛毫别,可吹牛的內(nèi)容都是我干的娃弓。 我是一名探鬼主播,決...
    沈念sama閱讀 40,193評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼岛宦,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼台丛!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起砾肺,我...
    開(kāi)封第一講書(shū)人閱讀 39,074評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤挽霉,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后变汪,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體侠坎,經(jīng)...
    沈念sama閱讀 45,505評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評(píng)論 3 335
  • 正文 我和宋清朗相戀三年裙盾,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了实胸。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,841評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡番官,死狀恐怖庐完,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情徘熔,我是刑警寧澤门躯,帶...
    沈念sama閱讀 35,569評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站酷师,受9級(jí)特大地震影響讶凉,放射性物質(zhì)發(fā)生泄漏染乌。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評(píng)論 3 328
  • 文/蒙蒙 一缀遍、第九天 我趴在偏房一處隱蔽的房頂上張望慕匠。 院中可真熱鬧,春花似錦域醇、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,783評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至酪呻,卻和暖如春减宣,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背玩荠。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,918評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工漆腌, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人阶冈。 一個(gè)月前我還...
    沈念sama閱讀 47,962評(píng)論 2 370
  • 正文 我出身青樓闷尿,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親女坑。 傳聞我的和親對(duì)象是個(gè)殘疾皇子填具,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評(píng)論 2 354