報錯**:
private void update()
報錯原因:由於在android7.0上,google使用了新的許可權機制,所以導致在呼叫相機的時候,如果傳遞的uri為」file://」型別,的系統會丟擲fileuriexposedexception這個錯誤。7.0以下是通過uri = uri.fromfile(file file)獲取的uri,然後通過intent傳出,但是在android7.0及以上版本可以採用uri = geturiforfile(context context, string authority, file file)。
解決方法:
用provider來實現開啟檔案
具體解決方法:
1.androidmanifest.xml
中配置fileprovider。
rc_file_path.xml檔案配置如下:
2.安裝apk**如下:
private void update() else
intent.setdataandtype(uri,
intent.setflags(intent.flag_activity_new_task);
context.startactivity(intent);
}
以上相容7.0完畢
未完待續
rc_file_path.xml
<?xml version="1.0" encoding="utf-8"?>
其中根元素是固定的,內部元素可以是以下節點:
對應getfilesdir()。
對應getcachedir()。
對應environment.getexternalstoragedirectory()。
對應getexternalfilesdir()。
對應getexternalcachedir()。
所以
uri = fileprovider.geturiforfile(context, "com.example.cc.fileprovider", file);中的file檔案的根目錄要與rc_file_path.xml中配置的path對應否則會報錯: illegalargumentexception: failed to find configured root that contain比如對應的path為
對應environment.getexternalstoragedirectory()。
PHP 7 0 公升級備註
摘要 php 7.0.0 beta1 發布了,在帶來了引人注目的效能提公升的同時,也帶來了不少語言特性方面的改變。以下由 lctt 翻譯自對官方的公升級備註,雖然目前還不是正式發布版,不過想必距離正式發布的特性已經差別不大了。php 7.0.0 beta1 發布了,在帶來了引人注目的效能提公升的同時...
MySQL公升級5 5 36公升級5 6 37
公升級的方法一般有兩類 1.利用mysqldump來直接匯出sql檔案,匯入到新庫中,這種方法是最省事兒的,也是最保險的,缺點的話,也顯而易見,大庫的mysqldump費時費力。2.直接替換掉mysql的安裝目錄和my.cnf,利用mysql upgrade 來完成系統表的公升級,這種方法需要備份原...
Lua5 1 公升級 Lua5 3 公升級 小結
lua的版本差異確實是比較讓人頭疼的事情,之前在移動端一直採用android下使用luajit,ios下使用lua5.1。這次公升級到xlua lua5.3版本 主要有兩方面的原因 一是ulua後續維護比價差,決定要公升級到xlua,另一方面是公司在上線檢查中提示禁止luajit的使用 一些cras...