自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Android 10的分區(qū)存儲(chǔ)

移動(dòng)開發(fā) Android
Android的分區(qū)存儲(chǔ)機(jī)制為應(yīng)用程序提供了靈活的存儲(chǔ)方式,既保護(hù)了用戶的隱私,又方便了數(shù)據(jù)的共享和傳輸。

分區(qū)存儲(chǔ)

在Android系統(tǒng)中,分區(qū)存儲(chǔ)是一種用于管理應(yīng)用程序數(shù)據(jù)的存儲(chǔ)機(jī)制。它將設(shè)備的存儲(chǔ)空間劃分為不同的分區(qū),每個(gè)分區(qū)都有不同的用途和訪問權(quán)限。

Android分區(qū)存儲(chǔ)從Android 10(API級別29)開始引入。在此版本之前,Android使用傳統(tǒng)的外部存儲(chǔ)和內(nèi)部存儲(chǔ)來管理應(yīng)用程序的文件和數(shù)據(jù)。從Android 10開始,引入了一種新的存儲(chǔ)模型,稱為分區(qū)存儲(chǔ)。

分區(qū)存儲(chǔ)將應(yīng)用程序的文件和數(shù)據(jù)分為兩個(gè)主要類別:公共存儲(chǔ)和私有存儲(chǔ)。公共存儲(chǔ)是可由多個(gè)應(yīng)用程序訪問的共享存儲(chǔ)空間,例如照片、視頻和音樂等媒體文件。私有存儲(chǔ)是每個(gè)應(yīng)用程序獨(dú)立使用的存儲(chǔ)空間,用于存儲(chǔ)應(yīng)用程序的私有文件和數(shù)據(jù)。

在分區(qū)存儲(chǔ)模型下,應(yīng)用程序默認(rèn)只能訪問其私有存儲(chǔ)空間,而對于公共存儲(chǔ)空間的訪問需要進(jìn)行特殊的權(quán)限申請。這樣可以增強(qiáng)用戶對文件和數(shù)據(jù)的隱私保護(hù),并提高應(yīng)用程序的安全性。

需要注意的是,雖然分區(qū)存儲(chǔ)從Android 10開始引入,但在此之前的版本中仍然可以使用傳統(tǒng)的外部存儲(chǔ)和內(nèi)部存儲(chǔ)模型。因此,開發(fā)者需要根據(jù)目標(biāo)設(shè)備的Android版本來選擇合適的存儲(chǔ)模型。

分區(qū)存儲(chǔ)的背景是為了提高應(yīng)用程序的安全性和隱私保護(hù)。通過將應(yīng)用程序的私有數(shù)據(jù)存儲(chǔ)在內(nèi)部存儲(chǔ)中,可以防止其他應(yīng)用程序?qū)@些數(shù)據(jù)的訪問。而外部存儲(chǔ)則提供了一個(gè)公共的存儲(chǔ)空間,使得應(yīng)用程序可以方便地共享數(shù)據(jù)。

總的來說,Android的分區(qū)存儲(chǔ)機(jī)制為應(yīng)用程序提供了靈活的存儲(chǔ)方式,既保護(hù)了用戶的隱私,又方便了數(shù)據(jù)的共享和傳輸。

分區(qū)存儲(chǔ)目錄

在Android 10中,引入了一種新的存儲(chǔ)訪問模式,稱為分區(qū)存儲(chǔ)。分區(qū)存儲(chǔ)將應(yīng)用的文件和數(shù)據(jù)存儲(chǔ)在應(yīng)用的私有目錄中,以增強(qiáng)用戶隱私和安全性。以下是Android 10分區(qū)存儲(chǔ)目錄的一些常見路徑:

(1) 內(nèi)部存儲(chǔ)私有目錄:/data/data/<package_name>/

這是應(yīng)用的私有目錄,只有應(yīng)用本身可以訪問。在這個(gè)目錄下,應(yīng)用可以存儲(chǔ)私有文件、數(shù)據(jù)庫、緩存等。

(2) 外部存儲(chǔ)私有目錄:/storage/emulated/0/Android/data/<package_name>/

這是應(yīng)用的外部存儲(chǔ)私有目錄,只有應(yīng)用本身可以訪問。在這個(gè)目錄下,應(yīng)用可以存儲(chǔ)私有文件、數(shù)據(jù)庫、緩存等。

(3) 共享外部存儲(chǔ)目錄:/storage/emulated/0/

這是設(shè)備的共享外部存儲(chǔ)目錄,所有應(yīng)用都可以訪問。在這個(gè)目錄下,應(yīng)用可以存儲(chǔ)共享文件、圖片、音頻、視頻等。

需要注意的是,Android 10中的分區(qū)存儲(chǔ)模式對于訪問外部存儲(chǔ)的權(quán)限有一些限制。應(yīng)用需要在清單文件中聲明相應(yīng)的權(quán)限,并且需要?jiǎng)討B(tài)請求用戶授權(quán)才能訪問外部存儲(chǔ)。這樣可以確保用戶對于自己的數(shù)據(jù)有更好的控制權(quán)。

訪問公共目錄

在Android 10及更高版本中,訪問公共目錄需要使用MediaStore或者Storage Access Framework(SAF)來進(jìn)行操作。SAF提供了一種標(biāo)準(zhǔn)的方式來訪問設(shè)備上的公共文件,以增強(qiáng)用戶的隱私和安全性。

1.MediaStore

使用「MediaStore」來訪問公共數(shù)據(jù)。MediaStore是一個(gè)提供對多媒體文件(如圖片、音頻、視頻)和其他文件(如文檔)的訪問的內(nèi)容提供者。以下是使用MediaStore訪問公共數(shù)據(jù)的步驟:

(1) 添加權(quán)限:在AndroidManifest.xml文件中添加以下權(quán)限:

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

這將允許應(yīng)用程序讀取外部存儲(chǔ)器上的媒體文件。

(2) 查詢公共數(shù)據(jù):使用ContentResolver查詢MediaStore來獲取公共數(shù)據(jù)。例如,要查詢所有的圖片,可以使用以下代碼:

Uri uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
String[] projection = {MediaStore.Images.Media._ID, MediaStore.Images.Media.DISPLAY_NAME};
String selection = null;
String[] selectionArgs = null;
String sortOrder = null;

Cursor cursor = getContentResolver().query(uri, projection, selection, selectionArgs, sortOrder);
if (cursor != null && cursor.moveToFirst()) {
    do {
        // 處理每個(gè)圖片的邏輯
        String id = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media._ID));
        String displayName = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DISPLAY_NAME));
        // ...
    } while (cursor.moveToNext());
    cursor.close();
}

這將返回一個(gè)包含圖片的Cursor對象,然后可以遍歷Cursor來處理每個(gè)圖片的邏輯。

(3) 處理數(shù)據(jù):根據(jù)需要處理查詢到的數(shù)據(jù)。例如,可以使用圖片的ID來獲取其內(nèi)容URI,并顯示圖片:

Uri imageUri = ContentUris.withAppendedId(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, Long.parseLong(id));
imageView.setImageURI(imageUri);

這將使用圖片的內(nèi)容URI來設(shè)置ImageView的圖片。

根據(jù)需要,可以使用不同的MediaStore類來訪問其他類型的公共數(shù)據(jù),如音頻、視頻或文檔。

2.SAF

以下是使用「SAF」訪問公共數(shù)據(jù)的步驟:

(1) 請求訪問權(quán)限:首先,你需要在應(yīng)用的清單文件(AndroidManifest.xml)中聲明適當(dāng)?shù)臋?quán)限。例如,如果你想訪問外部存儲(chǔ)器上的公共目錄,你需要添加以下權(quán)限:

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

(2) 啟動(dòng)SAF:當(dāng)你需要訪問公共目錄時(shí),你可以使用Intent啟動(dòng)SAF。例如,如果你想讓用戶選擇一個(gè)文件,你可以使用以下代碼:

Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("*/*");
startActivityForResult(intent, REQUEST_CODE);

(3) 處理返回結(jié)果:當(dāng)用戶選擇了一個(gè)文件后,你可以在onActivityResult方法中處理返回的結(jié)果。你可以通過data.getData()方法獲取所選文件的URI。

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
        Uri uri = data.getData();
        // 在這里處理所選文件的URI
    }
}

通過以上步驟,你可以在Android 10及更高版本中訪問公共目錄。請注意,訪問公共目錄可能需要用戶的授權(quán),因此你應(yīng)該在代碼中處理授權(quán)請求和用戶的選擇。

責(zé)任編輯:趙寧寧 來源: 沐雨花飛蝶
相關(guān)推薦

2010-03-02 15:35:41

Linux硬盤分區(qū)

2021-04-14 10:38:49

Windows 10Windows微軟

2012-09-19 15:22:36

Exchange存儲(chǔ)

2010-03-02 14:57:18

Linux文件系統(tǒng)

2018-01-08 08:38:00

2021-11-26 21:22:07

Windows 10Windows微軟

2017-05-22 20:29:29

Windows 10Windows分區(qū)方法

2017-08-30 16:59:54

PostgreSQL分區(qū)表

2018-09-06 13:10:12

Windows 10Windows磁盤分區(qū)

2015-09-09 15:54:00

mhddfs分區(qū)Linux

2010-02-02 13:05:25

存儲(chǔ)交換機(jī)

2024-04-26 08:28:08

高可用存儲(chǔ)架構(gòu)

2014-08-26 10:04:51

數(shù)據(jù)存儲(chǔ)

2019-08-20 15:55:14

Windows 10EFI分區(qū)Windows

2014-08-26 10:51:44

數(shù)據(jù)存儲(chǔ)

2019-01-15 14:29:43

Windows 10分區(qū)USB驅(qū)動(dòng)器

2010-01-13 16:29:00

FC存儲(chǔ)交換機(jī)

2017-12-18 08:21:46

存儲(chǔ)業(yè)界動(dòng)態(tài)

2017-12-07 10:23:41

盤點(diǎn)存儲(chǔ)公司

2017-08-09 08:56:04

SP存儲(chǔ)Android
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號