因為這個需要向系統相機傳送 content://uri,並授予 uri 臨時訪問許可權。而進行此授權的最簡單方式是使用 fileprovider類
許可權需要 sd卡讀寫和相機許可權 sd卡讀寫許可權需要動態獲取
android:name
="android.permission.camera"
/>
android:name
="android.permission.internet"
/>
android:name
="android.permission.read_external_storage"
/>
android:name
="android.permission.write_external_storage"
/>
android:name
="androidx.core.content.fileprovider"
android:authorities
="com.wang"
android:exported
="false"
android:granturipermissions
="true"
>
android:name
="android.support.file_provider_paths"
android:resource
="@xml/paths"
>
meta-data
>
provider
>
這裡可以看到 meta-data裡的 resource 的@xml/paths 需要建立,在res檔案下建立xml資料夾
這些做完之後就是去開啟相機進行拍照了
開啟相機進行拍照 (提前弄好乙個檔案名字來使用) 利用fileprovider.geturiforfile()來得到uri
private
funopencamera()
//根據時間建立出乙個檔案名字
private
funcreatename()
: string?
最後可以在onactivityresult裡拿到並設定到imageview上
override
funonactivityresult
(requestcode: int, resultcode: int,
data
: intent?)}
開啟相機的
camera ->}}
}
這樣就簡單的完成了拍照儲存本地並設定頭像
android相機拍照
拍照有兩種方式,一是使用android.hardware.camera,二是使用intent android.media.action.image capture 當然還是第一種好,不過 太複雜,以後有時間再說,這裡就說一下第二種方式吧。try catch exception e 這樣就可以呼叫系統...
Android 呼叫相機拍照並顯示,開啟相簿並顯示
設定拍照儲存路徑並將之轉換為uri 啟動相機,並傳遞該uri作為引數 在儲存路徑讀取 並顯示 private void takephoto outputimage.createnewfile catch ioexception e if build.version.sdk int 24 else 啟...
Android呼叫系統前置相機拍照
intent intent new intent mediastore.action image capture intent.putextra camerasensortype 2 呼叫前置攝像頭 測試,發現不正確,並不能直接開啟前置攝像頭,開啟的是上次使用的攝像頭。正確方法是 intent in...