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

Android多媒體功能開發(fā)(2)——FileProvider

這篇具有很好參考價(jià)值的文章主要介紹了Android多媒體功能開發(fā)(2)——FileProvider。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

使用系統(tǒng)多媒體界面需要在我們的應(yīng)用和其他應(yīng)用之間通過Intent傳遞音頻、圖片、視頻文件的信息。隨著Android版本的升級(jí),對(duì)應(yīng)用數(shù)據(jù)安全性方面的限制越來越多。

Android 6以后不允許應(yīng)用在外部存儲(chǔ)隨便創(chuàng)建目錄,只能在Android規(guī)定的應(yīng)用自己的文件目錄下創(chuàng)建目錄,該目錄可以用方法getExternalFilesDir(null)來獲得,其實(shí)際位置為:

? ? ? ? Android/data/<package-name>/files/

Android 7以前的版本可以直接使用“file://”格式的uri在應(yīng)用之間傳遞文件信息,格式為:

? ? ? ? file:// + <路徑> + <文件>

例如:file:///storage/emulated/0/Android/data/com.zzk.a1501systemactivity/files/test/audio.acc

Android 7及更高版本使用了更嚴(yán)格的文件分享模式,禁止開發(fā)人員在應(yīng)用外部以 “file://”格式的uri分享應(yīng)用自己目錄下的文件,否則會(huì)出現(xiàn) FileUriExposedException 異常。如果需要向其他應(yīng)用公開應(yīng)用自己目錄下的文件,需要使用FileProvider。

FileProvider是ContentProvider的一種,格式為:

? ? ? ? content:// + <FileProvider名>+<路徑別名>+<文件>

由于采用別名代替了實(shí)際路徑,避免了直接暴露文件位置,所以更加安全。例如:

? ? ? ? content://com.zzk.a1501systemactivity.fileProvider/testdir/audio.aac

使用FileProvider向其他應(yīng)用傳遞文件需要以下步驟:

  1. 聲明FileProvider
  2. 編寫一個(gè)xml文件,列出共享目錄和別名
  3. 生成Content URI
  4. 授予對(duì)方應(yīng)用訪問權(quán)限
  5. 提供Content URI給其他應(yīng)用

下面我們具體解釋一下這幾個(gè)步驟。

FileProvider需要在應(yīng)用配置文件AndroidManifest中聲明,和ContentProvider的聲明類似。例如:?

<provider
            android:name="androidx.core.content.FileProvider"
            android:authorities="${applicationId}.fileProvider"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/file_paths" />
</provider>


聲明中name屬性為FileProvider對(duì)應(yīng)的Java類(androidx.core.content.FileProvider),已經(jīng)在Android庫中存在,不用自己編寫。authories一般采用應(yīng)用包名+“.fileProvider”保證唯一性。meta-data中的FILE_PROVIDER_PATHS指定一個(gè)名為file_paths.xml的文件,在該文件中聲明要傳遞的文件所在路徑的別名。這個(gè)xml文件位于res/xml/目錄下,內(nèi)容類似于:

<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
    <external-files-path
        name="testdir"
        path="test"/>
</paths>

這里聲明了一個(gè)testdir,實(shí)際對(duì)應(yīng)的路徑為external-files-path代表的 /Android/data/com.zzk.a1501systemactivity/files/ 路徑下的test目錄。

除了<external-files-path>標(biāo)簽外,還可以使用下面的標(biāo)簽:

  • <root-path>: 設(shè)備根目錄/
  • <files-path>: context.getFilesDir()的目錄
  • <cache-path>:context.getCacheDir()的目錄
  • <external-path>:Environment.getExternalStorageDirectory()的目錄
  • <external-files-path>:ContextCompat.getExternalFilesDirs()下標(biāo)為0的目錄
  • <external-cache-path>:ContextCompat.getExternalCacheDirs()下標(biāo)為0的目錄
  • <external-media-path>:context.getExternalMediaDirs()下標(biāo)為0的目錄

接下來是生成Content URI,需要使用 FileProvider 類提供的公有靜態(tài)方法 getUriForFile 生成 Content URI。比如:

Uri uri = FileProvider.getUriForFile(MainActivity.this, fileProviderAuthority, audioFile);

getUriForFile方法的第一個(gè)參數(shù)是上下文;第二個(gè)參數(shù)是FileProvider的authorities,需要和配置文件中聲明FileProvider時(shí)給出的定義(android:authorities="${applicationId}.fileProvider")相同,一般采用“<應(yīng)用包名>.fileProvider”以保證唯一性。第三個(gè)參數(shù)是要傳遞的文件。

接下來就可以把該uri放到Intent中,再授予對(duì)方讀/寫權(quán)限,就可以傳遞給其他應(yīng)用使用了。示例代碼如下:文章來源地址http://www.zghlxwxcb.cn/news/detail-620414.html

Intent intent = new Intent(Intent.ACTION_VIEW);     //  創(chuàng)建intent
intent.setDataAndType(uri, "audio/*");     //  把文件的Content URI放入intent
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); //  授予對(duì)方讀取文件的權(quán)限
startActivity(intent);  //  傳遞給其他應(yīng)用

到了這里,關(guān)于Android多媒體功能開發(fā)(2)——FileProvider的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • HarmonyOS學(xué)習(xí)路之開發(fā)篇—多媒體開發(fā)(圖像開發(fā) 二)

    圖像編碼就是將PixelMap圖像編碼成不同存檔格式圖片,用于后續(xù)其他處理,比如保存、傳輸?shù)取.?dāng)前僅支持JPEG格式。 ImagePacker主要用于圖像編碼。 接口名 描述 create() 創(chuàng)建圖像打包器實(shí)例。 initializePacking(byte[] data, PackingOptions opts) 初始化打包任務(wù),將字節(jié)數(shù)組設(shè)置為打包后輸

    2024年02月11日
    瀏覽(97)
  • HarmonyOS學(xué)習(xí)路之開發(fā)篇—多媒體開發(fā)(圖像開發(fā) 一)

    HarmonyOS圖像模塊支持圖像業(yè)務(wù)的開發(fā),常見功能如圖像解碼、圖像編碼、基本的位圖操作、圖像編輯等。當(dāng)然,也支持通過接口組合來實(shí)現(xiàn)更復(fù)雜的圖像處理邏輯。 圖像解碼 圖像解碼就是不同的存檔格式圖片(如JPEG、PNG等)解碼為無壓縮的位圖格式,以方便在應(yīng)用或者系統(tǒng)

    2024年02月11日
    瀏覽(87)
  • HarmonyOS學(xué)習(xí)路之開發(fā)篇—多媒體開發(fā)(相機(jī)開發(fā) 一)

    HarmonyOS學(xué)習(xí)路之開發(fā)篇—多媒體開發(fā)(相機(jī)開發(fā) 一)

    HarmonyOS相機(jī)模塊支持相機(jī)業(yè)務(wù)的開發(fā),開發(fā)者可以通過已開放的接口實(shí)現(xiàn)相機(jī)硬件的訪問、操作和新功能開發(fā),最常見的操作如:預(yù)覽、拍照、連拍和錄像等。 相機(jī)靜態(tài)能力 用于描述相機(jī)的固有能力的一系列參數(shù),比如朝向、支持的分辨率等信息。 物理相機(jī) 物理相機(jī)就是獨(dú)

    2024年02月10日
    瀏覽(91)
  • HarmonyOS學(xué)習(xí)路之開發(fā)篇—多媒體開發(fā)(相機(jī)開發(fā) 二)

    Camera操作類,包括相機(jī)預(yù)覽、錄像、拍照等功能接口。 接口名 描述 triggerSingleCapture?(FrameConfig frameConfig) 啟動(dòng)相機(jī)幀的單幀捕獲。 triggerMultiCapture?(ListFrameConfig frameConfigs) 啟動(dòng)相機(jī)幀的多幀捕獲。 configure?(CameraConfig config) 配置相機(jī)。 flushCaptures?() 停止并清除相機(jī)幀的捕獲

    2024年02月11日
    瀏覽(91)
  • Ubuntu 多媒體播放器——KMPlayer Linux:功能強(qiáng)大的視頻播放工具

    KMPlayer Linux是一款功能強(qiáng)大的多媒體播放器,專為Ubuntu操作系統(tǒng)設(shè)計(jì)。它提供了豐富的功能和用戶友好的界面,使得在Ubuntu上觀看視頻變得更加方便和愉快。本文將介紹KMPlayer Linux的安裝過程,并提供一些示例代碼來演示其功能。 安裝KMPlayer Linux 要安裝KMPlayer Linux,請(qǐng)按照以下

    2024年02月04日
    瀏覽(132)
  • qt6 多媒體開發(fā)代碼分析(二、錄音)

    常見的音頻編碼格式包括MP3、AAC、OGG、WMA、FLAC等,它們之間具有以下區(qū)別: 編碼方式不同:這些編碼格式采用的編碼算法不同,例如MP3和AAC使用有損壓縮算法,而FLAC使用無損壓縮算法。 壓縮率和文件大小不同:由于采用的編碼算法不同,不同格式的音頻文件壓縮率和文件大

    2024年02月07日
    瀏覽(17)
  • HarmonyOS學(xué)習(xí)路之開發(fā)篇—多媒體開發(fā)(音頻開發(fā) 二(1)

    HarmonyOS學(xué)習(xí)路之開發(fā)篇—多媒體開發(fā)(音頻開發(fā) 二(1)

    接口說明 接口名 描述 AudioCapturer(AudioCapturerInfo audioCapturerInfo) throws IllegalArgumentException 構(gòu)造函數(shù),設(shè)置錄音相關(guān)音頻參數(shù),使用默認(rèn)錄音設(shè)備。 AudioCapturer(AudioCapturerInfo audioCapturerInfo, AudioDeviceDescriptor devInfo) throws IllegalArgumentException 構(gòu)造函數(shù),設(shè)置錄音相關(guān)音頻參數(shù)并指定錄音

    2024年04月23日
    瀏覽(98)
  • SDL庫入門:掌握跨平臺(tái)游戲開發(fā)和多媒體編程

    SDL (Simple DirectMedia Layer) 是一個(gè)跨平臺(tái)的開源多媒體庫,它提供了訪問音頻、鍵盤、鼠標(biāo)、操縱桿以及圖形硬件的底層接口。SDL 可用于開發(fā)游戲、仿真器、媒體播放器等多種類型的應(yīng)用程序。 1.1 SDL 的背景與應(yīng)用領(lǐng)域 SDL 由 Sam Lantinga 開發(fā),最早發(fā)布于 1998 年。SDL 的設(shè)計(jì)目標(biāo)是

    2024年02月02日
    瀏覽(23)
  • [任務(wù)書+論文+PPT+源碼]基于Android與多媒體的英文學(xué)習(xí)APP的設(shè)計(jì)與實(shí)現(xiàn)

    [任務(wù)書+論文+PPT+源碼]基于Android與多媒體的英文學(xué)習(xí)APP的設(shè)計(jì)與實(shí)現(xiàn)

    第1頁 畢業(yè)設(shè)計(jì)(論文)題目:基于ANDROID與多媒體技術(shù)的英文學(xué)習(xí)APP的設(shè)計(jì)與實(shí)現(xiàn)設(shè)計(jì)(論文)要求及原始數(shù)據(jù)(資料):1.綜述國內(nèi)外移動(dòng)互聯(lián)現(xiàn)狀及前景;2.了解ANDROID系統(tǒng),理解ANDROID應(yīng)用程序的開發(fā)方法和步驟;3.分析該ANDROID應(yīng)用程序的模塊結(jié)構(gòu)和主要算法;4.熟悉

    2024年01月22日
    瀏覽(23)
  • 15-1_Qt 5.9 C++開發(fā)指南_Qt多媒體模塊概述

    15-1_Qt 5.9 C++開發(fā)指南_Qt多媒體模塊概述

    多媒體功能指的主要是計(jì)算機(jī)的音頻和視頻的輸入、輸出、顯示和播放等功能,Qt 的多媒體模塊為音頻和視頻播放、錄音、攝像頭拍照和錄像等提供支持,甚至還提供數(shù)字收音機(jī)的支持。本章將介紹 Qt 多媒體模塊的功能和使用。 Qt 多媒體模塊提供了很多類,可以實(shí)現(xiàn)如下的

    2024年02月13日
    瀏覽(39)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包