7 0新特性 私有目錄被限制訪問

2022-07-16 06:03:09 字數 3213 閱讀 7008

卓官方為了提高私有檔案的安全性,面向 android 7.0 或更高版本的應用私有目錄被限制訪問 (0700)。此設定可防止私有檔案的元資料洩漏,如它們的大小或存在性.

傳遞軟體包網域外的 file:// uri 可能給接收器留下無法訪問的路徑。因此,嘗試傳遞 file:// uri 會觸發 fileuriexposedexception。分享私有檔案內容的推薦方法是使用 fileprovider。

(authority conflict)。

<

provider

android:name

="android.support.v4.content.fileprovider"

android:authorities

android:exported

="false"

android:granturipermissions

="true"

>

<

meta-data

android:name

="android.support.file_provider_paths"

android:resource

="@xml/file_provider_paths"

/>

provider

>

在res資源目錄下新建xml檔案下,在該資料夾下建立file_provider_paths.xml檔案,這個xml檔名並不是一定要這麼起,只要和清單檔案中配置的檔名一致就行

xml version="1.0" encoding="utf-8"

?>

<

resources

>

<

paths

>

<

external-path

path

=""name

="myfile"

>

external-path

>

<

files-path

name

="name1"

path

="test1"

/>

<

cache-path

name

="name2"

path

="test2"

/>

<

external-files-path

name

="name4"

path

="test4"

/>

<

external-cache-path

name

="name5"

path

="test5"

/>

paths

>

resources

>

比如安裝apk時:

public

static

void

installapk(context context, string apkpath)

file file = new file(apkpath);//

將該路徑增加到provider

intent intent = new

intent(intent.action_view);

//判讀版本是否在7.0以上

if (build.version.sdk_int >= 24)

else

context.startactivity(intent);

}

鴻洋的總結,工具類:

public

class

fileprovider7

else

return

fileuri;

}private

static

uri geturiforfile24(context context, file file)

/***

* @param

context

* @param

intent

* @param

type

* @param

file

* @param

writeable 是否賦予寫入許可權,比如安裝apk的時候就需要

*/public

static

void

setintentdataandtype(context context,

intent intent,

string type,

file file,

boolean

writeable)

} else}}

切記:

但是此時我們專案中可能會用到其他一些第三方sdk有用到拍照功能的話,他也為了適配android7.0也新增了這個節點,其實很簡單我們只要重寫乙個類 繼承自fileprovider,然後就按上述方法在新增乙個節點就可以了;例如;

<

provider

android:name

=".service.updatefileprovider"

android:authorities

android:exported

="false"

android:granturipermissions

="true"

>

<

meta-data

android:name

="android.support.file_provider_paths"

android:resource

/>

provider

>

import

android.support.v4.content.fileprovider;

/*** 解決需要新增多個fileprovider的問題 */

public

class updatefileprovider extends

fileprovider

php7 0的新特性

1.運算子 null 合併運算子 把這個放在第乙個說是因為我覺得它很有用。用法 a get a 1 它相當於 1.運算子 null 合併運算子 把這個放在第乙個說是因為我覺得它很有用。用法 a get a 1 它相當於 a isset get a get a 1 我們知道三元運算子是可以這樣用的 a...

Android 7 0 通知新特性

markdown 是一種輕量級標記語言,它允許人們使用易讀易寫的純文字格式編寫文件,然後轉換成格式豐富的html頁面。維基百科 使用簡單的符號標識不同的標題,將某些文字標記為粗體或者斜體,建立乙個鏈結等,詳細語法參考幫助?本編輯器支援markdown extra,擴充套件了很多好用的功能。具體請參考...

C 7 0 新特性4 返回引用

本文參考roslyn專案中的issue 118。1.c 7.0 新特性1 基於tuple的 多 返回值方法 2.c 7.0 新特性2 本地方法 3.c 7.0 新特性3 模式匹配 4.c 7.0 新特性4 返回引用 c 早在最初的發行版c 1.0中 2002年1月 就借鑑並延續了c c 中指標引數,...