官方的解決方案:
步驟1:
在androidmanifest.xml的(包名是androidmanifest.xml開頭package的屬性)
android:name="android.support.v4.content.fileprovider"
android:authorities="包名.fileprovider"
android:granturipermissions="true"
android:exported="false">
步驟2:在res裡面建立xml資料夾然後在裡面建立file_paths.xml的檔案,內容如下
<?xml version="1.0" encoding="utf-8"?>
步驟3:可以再觸發事件中呼叫相機
//通過fileprovider建立乙個content型別的uri
if (build.version.sdk_int >= build.version_codes.n)
intent intent = new intent();
intent.addflags(intent.flag_grant_read_uri_permission); //新增這一句表示對目標應用臨時授權該uri所代表的檔案
intent.setaction(mediastore.action_image_capture);//設定action為拍照
intent.putextra(mediastore.extra_output, imageuri);//將拍取的**儲存到指定uri
startactivityforresult(intent, 1);//1識別碼步驟4:在activity中的onactivityresult裡面通過是識別碼(1)來識別。方法裡面就會返回相機的資料。
動態許可權的使用第三方庫。(簡單方便)
依賴:
compile 'com.lovedise:permissiongen:0.0.6'a.在觸發事件裡面判斷許可權有沒有
if (contextcompat.checkselfpermission(updataactivity.this, manifest.permission.camera)
!= packagemanager.permission_granted) else
b.在使用的相機的介面的activity裡面編寫以下**(複製貼上即可)
@override //許可權的返回結果
public void onrequestpermissionsresult(int requestcode, string permissions,
int grantresults)
//許可權獲取成功的呼叫方法
@permissionsuccess(requestcode = 200)
public void opencamera()
//許可權獲取失敗的呼叫方法
@permissionfail(requestcode = 200)
public void failopencamera()
27 通過呼叫門實現提權
參考資料 9 呼叫門 無參 在之前的學習中,jmp far指令實現 跨段的本質是修改cs段暫存器,並不會改變程式的特權級別 即修改cpl的值 如果我們即想要實現 跨段和提權的話,就需要用到呼叫門。呼叫門是cpu提供的乙個功能,它允許乙個3環 cpl 3 的程式通過這扇 門 來修改cs段暫存器並實現提...
mini2440通過NFS啟動系統
弄了一天,終於可以通過nfs啟動系統了,記錄下來,以備後用。1.設定共享目錄 gedit etc exports新增以下內容 work root nfs rw,sync,no root squash 2.啟動nfs服務 etc init.d nfs start 防止每次開機都需要重新啟動nfs服務,...
7 通過ICE平面擴充套件型別系統
ice是通過物件來進行通訊的,物件提供的操作一旦多起來,就變得複雜起來,不便於管理。人類為了管理複雜的事物,唯一手段就是抽象,實現抽象的辦法就是分層。物件導向本來就是人類在面對複雜的現實世界時用來對世界的各種資訊進行分類用的,這樣可以讓人類更好的契合自己的腦袋,來認識世界。ice facets本質還...