欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

適配android7.0獲取文件的Uri的方法

 更新時(shí)間:2017年09月13日 09:07:12   作者:珠穆朗瑪小王子  
本篇文章主要介紹了適配android7.0獲取文件的Uri的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

前言#

Android 7.0已經(jīng)發(fā)布很久了,雖然市場份額還不是很高,但是流行起來都是早晚的事,所以適配Android 7.0刻不容緩。

Android 7.0 對(duì)系統(tǒng)進(jìn)行了很多的優(yōu)化:例如文件訪問權(quán)限,省電,網(wǎng)絡(luò),后臺(tái)等等,其中最突出的就是應(yīng)用外的Uri訪問。

什么時(shí)候會(huì)用到Uri的應(yīng)用外訪問呢?舉一個(gè)簡單的例子,下載apk更新,這個(gè)時(shí)候會(huì)調(diào)用系統(tǒng)功能來安裝這個(gè)apk,這就是應(yīng)用外訪問文件,需要傳入文件的Uri。

但是這樣可能會(huì)顯得不太安全,萬一是什么非常重要的文件就糟糕了,所以Android 7.0對(duì)應(yīng)用外訪問的Uri要進(jìn)行處理加密。

正文#

那應(yīng)該怎么處理這個(gè)問題呢?首先我們需要注冊(cè)ContentProvider,這個(gè)就很熟悉了,他可以把數(shù)據(jù)庫的內(nèi)容分享給其他應(yīng)用,現(xiàn)在是為了分享文件:

//res目錄下創(chuàng)建xml,設(shè)置要分享的目錄,名稱定義file_paths
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="myFile" path ="" />
</paths>

// 注冊(cè)provider
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.lzp.fileprovider"
android:exported="false"
// 賦予Uri權(quán)限
android:grantUriPermissions="true">

<meta-data
  android:name="android.support.FILE_PROVIDER_PATHS"
  // 設(shè)置要分享的路徑
  android:resource="@xml/file_paths"/>
</provider>

設(shè)置分享的路徑有三種:

  • <files-path/>代表的根目錄: Context.getFilesDir()
  • <external-path/>代表的根目錄:Environment.getExternalStorageDirectory()
  • <cache-path/>代表的根目錄: getCacheDir()

provider注冊(cè)完了之后,就需要稍微修改一下我們的java代碼:

Intent i = new Intent(Intent.ACTION_VIEW);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
// 判斷是否是7.0
if(Build.VERSION.SDK_INT >= 24){
  // 適配android7.0 ,不能直接訪問原路徑
  // 需要對(duì)intent 授權(quán)
  i.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
  i.setDataAndType(FileProvider.getUriForFile(context, context.getPackageName() + ".fileProvider",new File(filePath)),"application/vnd.android.package-archive");
}
else{
  i.setDataAndType(Uri.fromFile(new File(filePath)), "application/vnd.android.package-archive");
}
context.startActivity(i);

在java代碼中,我們先判斷了當(dāng)前的手機(jī)的系統(tǒng)版本,如果是7.0以下就使用之前的Uri,如果是7.0以上,開始通過Provider來獲取加密后的Uri。

最終得到的Uri的格式:

content://com.lzp.fileprovider/myFile/xxxxx.apk

看來主要是把分享出去的路徑進(jìn)行了加密,不能直接看到文件的完整路徑。

總結(jié)#

ok,解決這個(gè)問題就是這么簡單,如果是應(yīng)用內(nèi)訪問文件是不受影響的,例如我們的讀取圖片之類的操作,由于時(shí)間比較緊,寫的就比較簡單了,之后再寫點(diǎn)稍微高逼格一點(diǎn)的東西。

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • ListView實(shí)現(xiàn)聊天列表之處理不同數(shù)據(jù)項(xiàng)

    ListView實(shí)現(xiàn)聊天列表之處理不同數(shù)據(jù)項(xiàng)

    這篇文章主要為大家詳細(xì)介紹了ListView實(shí)現(xiàn)聊天列表之處理不同數(shù)據(jù)項(xiàng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • Android自定義view實(shí)現(xiàn)水波紋進(jìn)度球效果

    Android自定義view實(shí)現(xiàn)水波紋進(jìn)度球效果

    在我們的日常開發(fā)中自定義控件還是用的挺多的,設(shè)計(jì)師或者產(chǎn)品為了更好的漂亮,美觀,交互都會(huì)做一些牛逼的ui效果圖,但是最后實(shí)現(xiàn)的還是我們程序員啊。所以說 自定義view你還是得會(huì)的。
    2016-08-08
  • 詳解Android中的沉浸式狀態(tài)欄效果實(shí)例

    詳解Android中的沉浸式狀態(tài)欄效果實(shí)例

    本篇文章主要介紹了Android中的沉浸式狀態(tài)欄效果,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-12-12
  • Flutter?Widget之FutureBuilder使用示例詳解

    Flutter?Widget之FutureBuilder使用示例詳解

    這篇文章主要為大家介紹了Flutter?Widget之FutureBuilder使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • Android編程之圖片顏色處理方法

    Android編程之圖片顏色處理方法

    這篇文章主要介紹了Android編程之圖片顏色處理方法,涉及Android針對(duì)圖片的顏色值、飽和度、透明度等處理技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-10-10
  • 仿餓了嗎點(diǎn)餐界面ListView聯(lián)動(dòng)的實(shí)現(xiàn)

    仿餓了嗎點(diǎn)餐界面ListView聯(lián)動(dòng)的實(shí)現(xiàn)

    這篇文章主要介紹了仿餓了嗎點(diǎn)餐界面ListView聯(lián)動(dòng)的實(shí)現(xiàn)的相關(guān)資料,本文介紹的非常詳細(xì),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-09-09
  • 簡述Android中實(shí)現(xiàn)APP文本內(nèi)容的分享發(fā)送與接收方法

    簡述Android中實(shí)現(xiàn)APP文本內(nèi)容的分享發(fā)送與接收方法

    本篇文章主要對(duì)Android中實(shí)現(xiàn)APP文本內(nèi)容的分享發(fā)送與接收方法進(jìn)行介紹,相信對(duì)大家學(xué)習(xí)會(huì)有很好的幫助,需要的朋友一起來看下吧
    2016-12-12
  • Android項(xiàng)目基本結(jié)構(gòu)詳解

    Android項(xiàng)目基本結(jié)構(gòu)詳解

    這篇文章主要為大家詳細(xì)介紹了Android項(xiàng)目基本結(jié)構(gòu),從最基本的內(nèi)容講起,帶你逐步進(jìn)入用C#進(jìn)行Android應(yīng)用開發(fā)的樂園,感興趣的小伙伴們可以參考一下
    2016-06-06
  • RxJava入門之介紹與基本運(yùn)用

    RxJava入門之介紹與基本運(yùn)用

    對(duì)于Android開發(fā)者來說,當(dāng)有一天打開技術(shù)論壇、博客滿屏都是各種Rx的時(shí)候,心里是很慌的。所以趁著現(xiàn)在跟著小編通過這篇文章先來簡單認(rèn)識(shí)下RxJava,以及RxJava的基本運(yùn)用。對(duì)這感興趣的朋友下面來一起看看吧。
    2016-09-09
  • Android SDK三種更新失敗及其解決方法

    Android SDK三種更新失敗及其解決方法

    這篇文章主要介紹了Android SDK三種更新失敗及其解決方法,需要的朋友可以參考下
    2014-10-10

最新評(píng)論