介绍
在6.0版本中,安卓让获取敏感权限的方法,不单单在manifest中添加权限那么简单了
需要在自己的代码中添加一些权限才行,就拿sdCard来举例
方法
1.判断时候有要用的权限
public boolean hasPermission (String... permissions){
for (String permission:permissions){
if (ContextCompat.checkSelfPermission(this ,permission)!=PackageManager.PERMISSION_GRANTED){
return false ;
}
}
return true ;
}
2.添加需求权限
public void requestPermission (int code,String... permissions){
ActivityCompat.requestPermissions(this ,permissions,code);
}
3.全部代码,是从SDCard相册中将选择的相片添加到自己的imageview中
package com.sdp.panda.imageapp;
import android.Manifest;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.ImageFormat;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v4.content.PermissionChecker;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;
import java.io.IOException;
import java.security.Permission;
/**
* Created by 80926 on 2016/10/27.
*/
public class LocationImageActivity extends Activity {
private int targetSdkVersion;
private Button button;
private ImageView iv;
@Override
protected void onCreate (Bundle savedInstanceState) {
super .onCreate(savedInstanceState);
setContentView(R.layout.activity_location);
targetSdkVersion = this .getApplicationInfo().targetSdkVersion;
button = (Button) findViewById(R.id.btn_show);
iv = (ImageView) findViewById(R.id.iv_xiangce);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick (View v) {
Intent intent = new Intent();
intent.setType("image/*" );
intent.setAction(Intent.ACTION_PICK);
startActivityForResult(intent,1 );
}
});
}
@Override
protected void onActivityResult (int requestCode, int resultCode, Intent data) {
super .onActivityResult(requestCode, resultCode, data);
if (requestCode == 1 && resultCode == RESULT_OK) {
Uri imageUri = data.getData();
Log.e("sdp" , "onActivityResult:" + imageUri.toString());
if (hasPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)){
Bitmap bitmap = LruCacheUtils.getInstance().decodeSampleBitmapFromUri(LocationImageActivity.this , imageUri, 900 , 900 );
iv.setImageBitmap(bitmap);
}else {
requestPermission(1 ,Manifest.permission.WRITE_EXTERNAL_STORAGE);
}
}
}
public boolean hasPermission (String... permissions){
for (String permission:permissions){
if (ContextCompat.checkSelfPermission(this ,permission)!=PackageManager.PERMISSION_GRANTED){
return false ;
}
}
return true ;
}
public void requestPermission (int code,String... permissions){
ActivityCompat.requestPermissions(this ,permissions,code);
}
}