Android7 0呼叫相機

2021-08-08 06:47:44 字數 2772 閱讀 5238

從android7.0開始,android對訪問檔案的許可權收回,所以如果我們要在應用件共享檔案,應該傳送一項content://uri,並對這個uri授予臨時訪問的許可權。而對這個uri授權最簡單的方式就是使用fileprovider類。

具體的操作步驟是:

1.建立乙個path檔案:

在res下邊建立乙個xml的資料夾,在xml下邊建立乙個資源檔案,比如命名為filepaths(名字是自己隨便起的,只要和在manifest檔案中註冊provider時所引用的resource保持一致就行)

external-path代表的根目錄是:environment.getexternalstoragedirectory()

files-path代表的根目錄是:context.getfilesdir()

cache-path代表的根目錄是:getcachedir()

name:是自己定義的起的乙個名字。

path:.代表根目錄,代表可以向其他應用共享根目錄及其子目錄下的任何乙個檔案,如果將path設為path="image",代表只可以共享根目錄下的image資料夾,其他的資料夾是不能共享的。

<?

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

<paths>

<external-pathname="external_path"path="."/>

paths>

2.在manifest檔案中註冊provider

name:是固定的

authorities:你應用的包名+.fileprovider,這裡的fileprovider可以隨便寫,只要與fileprovider.geturiforfile()方法中的第二個引數authority對應起來就行。

granturipermissions:固定值true,表示uri訪問授權

exported:固定值false

meta-data-name:固定值 android.support.file_provider_paths

<providerandroid:name="android.support.v4.content.fileprovider"android:authorities="com.example.android.imagecut.fileprovider"android:exported="false"android:granturipermissions="true">

<meta-dataandroid:name="android.support.file_provider_paths"android:resource="@xml/file_paths"/>

provider>

3.**中呼叫:

if(environment.

getexternalstoragestate

().equals(environment.

media_mounted

)) intent intent =

newintent(mediastore.

action_image_capture

);

if (build.version.sdk_int >= 24)

else

startactivityforresult(intent,

request_carema

);}

以上就是實現訪問檔案的一種方式。

strictmode.vmpolicy.builder builder =newstrictmode.vmpolicy.builder();

strictmode.setvmpolicy(builder.build());

builder.detectfileuriexposure();

加了這些**以後就能繼續按照以前的方式訪問了。

第一種方式完整**:

Android 7 0呼叫相機方法

android 7.0之後呼叫相機的方式不允許以file 的方式呼叫,需要以共享檔案的方式content url contentvalues contentvalues new contentvalues 1 contentvalues.put mediastore.images.media.dat...

android 7 0呼叫相機閃退問題

背景 在安卓7.0手機上,呼叫系統相機拍照,結果出現閃退。原因 android7.0中為了提高私有檔案的安全性,禁止向你的應用外公開 file uri。如果一項包含檔案 file uri型別 的 intent 離開你的應用,應用失敗,並出現 fileuriexposedexception 異常。解決...

Android7 0 之 直接啟動

搬運工.當裝置已開機但使用者尚未解鎖裝置時,android n 將在安全的 直接啟動 模式下執行。為支援此操作,系統為資料提供兩個儲存位置 預設情況下,應用不會在 直接啟動 模式下執行。如果您的應用需要在 直接啟動 模式下進行操作,您可以註冊在此模式期間應執行的應用元件。對於需要在 直接啟動 模式下...