您好,登錄后才能下訂單哦!
本篇文章為大家展示了如何在android7.0中獲取文件的Uri,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。
//res目錄下創(chuàng)建xml,設(shè)置要分享的目錄,名稱(chēng)定義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 ,不能直接訪(fǎng)問(wèn)原路徑 // 需要對(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以上,開(kāi)始通過(guò)Provider來(lái)獲取加密后的Uri。
最終得到的Uri的格式:
content://com.lzp.fileprovider/myFile/xxxxx.apk
看來(lái)主要是把分享出去的路徑進(jìn)行了加密,不能直接看到文件的完整路徑。
上述內(nèi)容就是如何在android7.0中獲取文件的Uri,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。