android6.0動態申請權限調用圖庫


1. 權限動態申請,最好在manifests中也加上靜態權限。

//veiw的點擊事件
public void choosePicture(View view){
// 判斷SDK是否>=23
if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.M){
// 判斷是否已有權限
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.CAMERA)!= PackageManager.PERMISSION_GRANTED) {
// 申請權限,參數1是當前activity 參數2是我要申請的相關權限(一個String數組)
//參數3是我定義的requestCode,在onRequestPermissionResult()要用來識別是否我的返回,
ActivityCompat.requestPermissions(this,new String[]{
Manifest.permission.WRITE_EXTERNAL_STORAGE
,Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.CAMERA}, 123);
}
}else {
/**
* 打開選擇圖片的界面
*/
Intent intent = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
intent.setType("image/*");//相片類型
startActivityForResult(intent, 125);
}
}


2. 權限申請返回結果處理(如果斯達康<23可忽略)
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
// requestCode識別,找到我自己定義的requestCode
if (requestCode==123) {
boolean grantedAll=true;
for (int rangtResult:grantResults) {
//判斷用戶是否給予權限
if (rangtResult!=PackageManager.PERMISSION_GRANTED){
grantedAll=false;
break;
}
}
if (grantedAll){
/**
* 打開選擇圖片的界面
*/
Intent intent = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
intent.setType("image/*");//相片類型
startActivityForResult(intent, 125);
}
}
}


3. 獲取已選擇的圖片並顯示(可以添加圖片裁剪、壓縮等處理)
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
//判斷返回的結果
if (resultCode== Activity.RESULT_OK){
// 判斷是否是我的請求返回
if (requestCode==125){
if (data!=null) {
// 獲取的選擇的圖片並顯示
Uri uri = data.getData();
// getFromPictureHome(uri); //調用系統自帶的裁剪功能
iv2.setImageURI(uri);
}
}else if(requestCode==3){
Uri uri=data.getData();
iv2.setImageURI(uri);
}
}
}


4. 處理選擇的圖片(可忽略,不需要的話)
// 裁減
private void getFromPictureHome(Uri uri) {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT, null);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("image/*");
intent.putExtra("scale", true);
//配置是否返回數據
intent.putExtra("return-data", false);
//設置輸出位置 uri
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
intent.putExtra("outputFormat", "JPEG");
startActivityForResult(intent, 3);
}


權限分組:

 

 
       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM