android新版本的拍照並儲存系統相簿功能

2021-08-08 13:28:17 字數 1595 閱讀 9406

在android7.0以上版本傳統的拍照功能**要作改變,特別是傳統的uri被認為是不安全的,要通過fileprovider封裝uri

intent intent=new intent(mediastore.action_image_capture);file file=new file(temp_image_path);

file.createnewfile();

photouri=uri.fromfile(file);

if (build.version.sdk_int>=24)

photouri=fileprovider.geturiforfile(this,"com.example.aa.puzzle.fileprovider",file);

intent.putextra(mediastore.extra_output,photouri);

android:authorities是用來標識provider的唯一標識,和前面的**對應,granuripermissions用來控制共享文章的訪問許可權

在res新建資料夾xml,新建檔案path.xml

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

同時由於我的手機沒有sd卡,特意去了解了直接存在系統相簿的方法

string temp_image_path=environment.getexternalstoragedirectory().getpath()+"/puzzle/";
前面的函式可以獲取到手機儲存的目錄,下面那個資料夾可以新建也可以直接放在已有的檔案比如camera,我這裡是放在新建

資料夾puzzle

new file(temp_image_path).mkdir();//新建資料夾

temp_image_path=temp_image_path+"image.png";//補全路徑,建議用時間戳或隨機函式

file file=new file(temp_image_path);

file.createnewfile();

然後通過第一段**吧file通過fileprovider轉為uri,再傳給

mediastore.extra_output

還需要添上這句話更新相簿

sendbroadcast(new intent(intent.action_media_scanner_scan_file, uri.parse("file://" + temp_image_path)));
當然,還有第二種方法可以把**儲存到相簿

mediastore.images.media.insertimage(getcontentresolver(),bitmap,string.valueof(math.random())+"image","image");
intent.putextra(mediastore.extra_video_quality,1);
防止被壓縮。

iOS檢查App新版本並更新新版本

檢查新版本 更新 第一種方法 檢查新版本 更新 dispatch async dispatch get global queue dispatch queue priority default,0 檢查新版本更新 void showalert void alertview uialertview a...

Android版本更新 版本號判斷

先貼乙個後台返回的一般版本更新介面格式 假設目前已判斷到後台code 本地 如下 首先拿到本地的 的 物件 public static file querydownloadedapk context context cur.close return targetapkfile 拿到 file tar...

新版本的mybatis的介紹

1.如果出現資料庫的名稱和實體類的名稱不一致,會出現傳入物件的時候,讀取不到數值 比如 select id,uname as name from user 資料庫的名稱為uname,實體類為name,此時需要起個別名 2.1在實現的時候,查詢字串,需要namespace.sqlid,容易拼接錯誤 2...