最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android 7.0應(yīng)用之間如何共享文件

 更新時間:2020年12月23日 14:54:12   作者:躬行之  
這篇文章主要介紹了Android 7.0應(yīng)用之間如何共享文件,幫助大家更好的理解和使用Android進行開發(fā),感興趣的朋友可以了解下

開發(fā)中經(jīng)常需要將某個文件向另一個應(yīng)用程序傳遞,如圖片上傳到另一個應(yīng)用程序、文件在不同存儲路徑之間的復(fù)制粘貼等都需要共享文件,可以這樣理解接收文件的應(yīng)用是在向提供文件的應(yīng)用發(fā)送請求。

從 Android 7.0 開始,Android 執(zhí)行 StrictMode 策略,禁止在應(yīng)用外部公開 file://URL,如果在 Android 7.0 以上的應(yīng)用不使用 FileProvider ,則會拋出 FileUriExposedException 異常,Android 7.0 以后要在應(yīng)用之間共享文件要使用 content://URL 授予 URL 臨時訪問權(quán)限,即要使用 FileProvider 的方式來授予臨時訪問權(quán)限,具有臨時訪問權(quán)限的 URL 是安全的,這種臨時的 URL 會自動過期,其中 FileProvider 提供的 getUriForFile() 用于生成文件的內(nèi)容。

在所有情況下,從您的應(yīng)用程序向另一個應(yīng)用程序提供文件的唯一安全方法是向接收應(yīng)用程序發(fā)送文件的內(nèi)容URI,并授予該URI的臨時訪問權(quán)限。具有臨時URI訪問權(quán)限的內(nèi)容URI是安全的,因為它們僅適用于接收URI的應(yīng)用程序,并且它們會自動過期。 Android FileProvider組件提供getUriForFile()方法,用于生成文件的內(nèi)容URI。

這里也會提到一個在 Android 7.0 及更高版本時經(jīng)常出現(xiàn)的異常:FileUriExposedException,通過使用 FileProvider 就可以解決該異常,當(dāng)然這也是 Android 系統(tǒng)在安全性上不斷完善的結(jié)果。

  • 指定FileProvider
  • 指定文件共享路徑

指定FileProvider

在 AndroidManifest 文件中指定 Provider,參考如下:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
 package="com.example.myapp">
 <application
  ...>
  
  <!--android:authorities="${applicationId}.yourname"-->
  <provider
   android:name="android.support.v4.content.FileProvider"
   <!--authorities屬性指定要用于FileProvider生成的內(nèi)容URI的URI權(quán)限,一般是applicationId.yourname"組成-->
   android:authorities="com.example.myapp.fileprovider"
   android:grantUriPermissions="true"
   android:exported="false">
   <meta-data
    android:name="android.support.FILE_PROVIDER_PATHS"
    android:resource="@xml/filepaths" />
  </provider>
  ...
 </application>
</manifest>

指定文件共享路徑

上面代碼中在 meta-data 目錄中指定了要共享的文件目錄,文件目錄在 filepathd.xml 中定義,可在相應(yīng)的 xml 中定義的路徑有以下幾種,具體參考如下:

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
 <paths>

  <!--表示設(shè)備的根目錄(new File("/"))-->
  <root-path name="root" path="" />
  <!--表示context.getFileDir()-->
  <files-path name="files" path="" />
  <!--表示context.getCacheDir()-->
  <cache-path name="cache" path="" />
  <!--表示Environment.getExternalStorageDirectory()-->
  <external-path name="external" path="" />
  <!--表示context.getExternalFilesDirs()-->
  <external-files-path name="name" path="path" />
  <!--表示getExternalCacheDirs()-->
  <external-cache-path name="name" path="path" />

 </paths>
</resources>

在 xml 中表示某個路徑需要兩個屬性,path 表示當(dāng)前指定目錄的子目錄,如果不指定則表示的是當(dāng)前指定目錄下的根目錄及子目錄,name 表示會將 name 添加的 URL 后面作為該文件的訪問路徑,參考如下:

//表示當(dāng)前要共享的文件會在 context.getFileDir() 目錄下的 images 子目錄下查找要共享的文件
<paths>
 <files-path path="images/" name="myImage" />
</paths>

//表示最終生成的共享的文件URL
content://com.example.myapp.fileprovider/myImage/image.jpg

獲取Uri

最后,配置完成之后,在所有需要使用文件相關(guān)的,在獲取 Url 時應(yīng)該按照如下方式獲取,具體如下:

public Uri getUri(File file) {
 Uri uri = null;
 if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
  uri = FileProvider.getUriForFile(mContext, mContext.getPackageName() + ".youName", file);
 } else {
  uri = Uri.fromFile(file);
 }
 return uri;
}

這樣就可以在 Android 7.0 以上愉快的共享文件了,這個知識點也算是開發(fā)中經(jīng)常會遇到到。

以上就是Android 7.0應(yīng)用之間如何共享文件的詳細內(nèi)容,更多關(guān)于Android 7.0 共享文件的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Android解析json數(shù)據(jù)示例代碼(三種方式)

    Android解析json數(shù)據(jù)示例代碼(三種方式)

    本篇文章主要介紹了Android解析json數(shù)據(jù)示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • Android簡單封裝一個MVP基類流程詳解

    Android簡單封裝一個MVP基類流程詳解

    MVP是從經(jīng)典的模式MVC演變而來,它們的基本思想有相通的地方:Controller/Presenter負責(zé)邏輯的處理,Model提供數(shù)據(jù),View負責(zé)顯示。下面這篇文章主要給大家介紹了關(guān)于Android從實現(xiàn)到封裝MVP的相關(guān)內(nèi)容,分享出來供大家參考學(xué)習(xí),下面話不多說了,來一起看看詳細的介紹吧
    2023-03-03
  • 詳解EventBus 3.x 的快速使用

    詳解EventBus 3.x 的快速使用

    這篇文章主要介紹了詳解EventBus 3.x 的快速使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • Android實現(xiàn)簡單卡片布局

    Android實現(xiàn)簡單卡片布局

    這篇文章主要為大家詳細介紹了Android實現(xiàn)卡片布局的相關(guān)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • Android實現(xiàn)圓形圖片或者圓角圖片

    Android實現(xiàn)圓形圖片或者圓角圖片

    這篇文章主要為大家詳細介紹了Android實現(xiàn)圓形圖片或者圓角圖片的代碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • android仿直播圓點加載效果

    android仿直播圓點加載效果

    這篇文章主要為大家詳細介紹了android仿直播圓點加載效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • Android中Webview使用全面詳解

    Android中Webview使用全面詳解

    Android WebView是一個用于在應(yīng)用程序中顯示網(wǎng)頁內(nèi)容的組件,它可以加載網(wǎng)頁并在應(yīng)用程序內(nèi)部顯示,而不是調(diào)用系統(tǒng)瀏覽器,這篇文章主要給大家介紹了關(guān)于Android中Webview使用的相關(guān)資料,需要的朋友可以參考下
    2024-07-07
  • Android TextSwitcher文本切換器和ViewFlipper使用詳解

    Android TextSwitcher文本切換器和ViewFlipper使用詳解

    這篇文章主要為大家詳細介紹了Android TextSwitcher文本切換器和ViewFlipper的使用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • Android9.0上針對Toast的特殊處理圖文詳解

    Android9.0上針對Toast的特殊處理圖文詳解

    這篇文章主要給大家介紹了關(guān)于Android9.0上針對Toast的特殊處理的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Android自定義PopWindow實現(xiàn)QQ、微信彈出菜單效果

    Android自定義PopWindow實現(xiàn)QQ、微信彈出菜單效果

    這篇文章主要為大家詳細介紹了Android自定義PopWindow實現(xiàn)QQ、微信彈出菜單效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-04-04

最新評論

瑞安市| 上犹县| 四会市| 通江县| 垣曲县| 兰坪| 东明县| 东辽县| 喀喇沁旗| 南雄市| 阿拉善右旗| 绥棱县| 德江县| 丰县| 克拉玛依市| 威宁| 宕昌县| 南城县| 达拉特旗| 扎囊县| 桐乡市| 河北区| 喜德县| 阳高县| 同江市| 大悟县| 阳东县| 迭部县| 云浮市| 辽源市| 平陆县| 香港 | 德令哈市| 民县| 威宁| 方城县| 全州县| 长子县| 宾川县| 仁化县| 朝阳市|