دسترسی به داده های اشتراک گذاری شده در اندروید

با شروع  راه اندازی سیستم Android 11 (API level 30) مجموعه داده های بزرگی را ذخیره کرده است که ممکن است چندین برنامه برای استفاده موارد مانند یادگیری ماشین و پخش رسانه به آنها دسترسی داشته باشد. این قابلیت به کاهش فراوانی داده ها، هم از طریق شبکه و هم از طریق دیسک کمک می کند.

وقتی برنامه شما به دسترسی یک مجموعه داده بزرگ مشترک نیاز دارد، قبل از تعیین اینکه آیا نسخه جدید نصب شده قابلیت پشتیبانی را دارد یا نه، ابتدا می تواند به دنبال این مجموعه داده های ذخیره شده، به نام باشید. برنامه ها با استفاده از API ها در BlobStoreManager می توانند به این قابلیت مجموعه داده های اشتراک گذاری شده دسترسی پیدا کنند.

این سیستم shared data blobs را کنترل کرده و برنامه هایی را که می توانند به آنها دسترسی داشته باشند کنترل می کند. وقتی برنامه شما با data blobs همکاری می کند، می توانید با فراخوانی یکی از روش های زیر مشخص کنید که به کدام برنامه های دیگر باید دسترسی داشته باشند:

  • برای دسترسی به مجموعه خاصی از برنامه ها در یک دستگاه، نام بسته های این برنامه ها را به allowPackageAccess () منتقل کنید.
  • برای اجازه دادن به برنامه هایی که گواهینامه های آنها با استفاده از همان کلید مورد استفاده برای برنامه شما امضا شده است – مانند مجموعه برنامه ای که مدیریت می کنید -کدSameSignatureAccess () فراخوانی کنید.
  • برای اعطای دسترسی به همه برنامه های موجود در دستگاه، allowPublicAccess () فراخوانی کنید.

Access shared data blobs

این سیستم با استفاده از ابزار BlobHandle هر blob داده مشترک را نشان می دهد. هر نمونه از BlobHandle حاوی یک هش با رمزنگاری امن و برخی از جزئیات شناسایی مجموعه داده است.

برای دسترسی به blobهای داده مشترک، جزئیات شناسایی را از سرور بارگیری کنید. با استفاده از این جزئیات، بررسی کنید که آیا مجموعه داده از قبل در سیستم موجود بوده است.

مرحله بعدی به در دسترس بودن داده بستگی دارد.

  • مجموعه داده موجود است.

اگر مجموعه داده از قبل در دستگاه موجود است، همانطور که در قطعه کد زیر نشان داده شده است، از سیستم به آن دسترسی پیدا کنید:

val blobStoreManager =  
getSystemService(Context.BLOB_STORE_SERVICE) as BlobStoreManager

val blobHandle = BlobHandle.createWithSha256(sha256DigestBytes,

        "Sample photos",

        System.currentTimeMillis() + TimeUnit.DAYS.toMillis(1),

        "photoTrainingDataset")

try {

    val input = ParcelFileDescriptor.AutoCloseInputStream(

            blobStoreManager.openBlob(blobHandle))

    useDataset(input)

}

 

Kotlin

BlobStoreManager blobStoreManager =

        ((BlobStoreManager) getSystemService(Context.BLOB_STORE_SERVICE));

if (blobStoreManager != null) {

    // The label "Sample photos" is visible to the user.

    BlobHandle blobHandle = BlobHandle.createWithSha256(

            sha256DigestBytes,

            "Sample photos",

            System.currentTimeMillis() + TimeUnit.DAYS.toMillis(1),

            "photoTrainingDataset");

    try (InputStream input = new ParcelFileDescriptor.AutoCloseInputStream(

            blobStoreManager.openBlob(blobHandle))) {

        useDataset(input);

    }

}

 

Java
  • مجموعه داده در دسترس نیست

اگر مجموعه داده در دسترس نیست، همانطور که در قطعه کد زیر نشان داده شده است ، آن را از سرور بارگیری کرده و به سیستم وارد کنید:

val sessionId = blobStoreManager.createSession(blobHandle)

try {

val session = blobStoreManager.openSession(sessionId)

try {

// For this example, write 200 MiB at the beginning of the file.

val output = ParcelFileDescriptor.AutoCloseOutputStream(

session.openWrite(0, 1024 * 1024 * 200))

writeDataset(output)

session.apply {

allowSameSignatureAccess()

allowPackageAccess(your-app-package,

app-certificate)

allowPackageAccess(some-other-app-package,

app-certificate)

commit(mainExecutor, callback)

}

}

}

 

Kotlin

long sessionId = blobStoreManager.createSession(blobHandle);

try (BlobStoreManager.Session session =

blobStoreManager.openSession(sessionId)) {

// For this example, write 200 MiB at the beginning of the file.

try (OutputStream output = new ParcelFileDescriptor.AutoCloseOutputStream(

session.openWrite(0, 1024 * 1024 * 200)))

writeDataset(output);

session.allowSameSignatureAccess();

session.allowPackageAccess(your-app-package,

app-certificate);

session.allowPackageAccess(some-other-app-package,

app-certificate);

session.commit(getMainExecutor(), callback);

}

}

 

Java

دیدگاه‌ها و پرسش‌ها

برای ارسال نظر نیاز است تا ابتدا وارد سایت شوید.

هیچ نظری ارسال نشده است.

در این مقاله قصد داریم تا درباره دسترسی به داده های اشتراک گذاری شده صحبت کنیم.


قیمت آموزش
رایگان
نوع دسترسی
رایگان

این مقاله در حال حاضر تنها به روش رایگان در دسترس می باشد.

golaleh hoseini
مدرس دوره

golaleh hoseini

مدرس دوره های سِون کلونر

گفتگوی برنامه نویسان

بخشی برای حل مشکلات برنامه‌نویسی و مباحث پیرامون آن

دوره های پیشنهادی

مقالات پیشنهادی

نود جی اس

توسعه دهندگان نود جی اس, زبان جاوا اسکریپت را از یک زبان قابل اجرا در مرورگر خارج کرده و به زبانی تبدیل کردن که بتوان آن را بصورت یه اپلیکیشن مستفل اجرا کرد و ...


۹۱۲
۰
۱۲ آذر ۱۳۹۹

هک و امنیت

در تعریف کلی این واژه می توان گفت که به پیدا کردن راه های نفوذ به یک حریم شخصی و استفاده غیر مجاز از آن را هک می نامیم. هدف از هک می تواند ...


۹۵۹
۰
۱۳ آذر ۱۳۹۹

هوش مصنوعی

هوش مصنوعی یا هوش ماشینی, به هوشمندی نشان داده شده توسط ماشین در شرایط مختلف گفته میشود که مقابل هوش طبیعی در انسان ها قرار دارد که ...


۸۶۱
۰
۱۱ آذر ۱۳۹۹

بک لینک چیست؟

بک لینک (Back Link) به لینک دادن یک سایت به سایت دیگر گفته میشود که یک فاکتور مهم و اساسی در سئو هر سایتی می باشد.


۹۹۲
۰
۲۲ آذر ۱۳۹۹

Fatal error: Uncaught wfWAFStorageFileException: Unable to verify temporary file contents for atomic writing. in /home/clonerco/public_html/wp-content/plugins/wordfence/vendor/wordfence/wf-waf/src/lib/storage/file.php:52 Stack trace: #0 /home/clonerco/public_html/wp-content/plugins/wordfence/vendor/wordfence/wf-waf/src/lib/storage/file.php(659): wfWAFStorageFile::atomicFilePutContents('/home/clonerco/...', '<?php exit('Acc...') #1 [internal function]: wfWAFStorageFile->saveConfig('livewaf') #2 {main} thrown in /home/clonerco/public_html/wp-content/plugins/wordfence/vendor/wordfence/wf-waf/src/lib/storage/file.php on line 52