public class MainActivity extends AppCompatActivity { public static final int REQUEST_CODE=200; public static final int REQUEST_CODE_PICK_IMAGE=300; private Button btn; private ImageView iv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { checkPerm(); } }); } private void checkPerm() { /**1.在AndroidManifest文件中添加需要的权限。 * * 2.检查权限 *这里涉及到一个API,ContextCompat.checkSelfPermission, * 主要用于检测某个权限是否已经被授予,方法返回值为PackageManager.PERMISSION_DENIED * 或者PackageManager.PERMISSION_GRANTED。当返回DENIED就需要进行申请授权了。 * */ if(ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){ //权限没有被授予 /**3.申请授权 * @param * @param activity The target activity.(Activity|Fragment、) * @param permissions The requested permissions.(权限字符串数组) * @param requestCode Application specific request code to match with a result(int型申请码) * reported to {@link OnRequestPermissionsResultCallback#onRequestPermissionsResult( * int, String[], int[])}. * */ ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_CODE); }else{//权限被授予 choosePhoto(); //直接操作 } } private void initView() { btn= (Button) findViewById(R.id.btn_open_pic); iv= (ImageView) findViewById(R.id.iv); } /*** * * 4.处理权限申请回调 */ @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { if (requestCode == REQUEST_CODE) { if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { //权限被授予 choosePhoto(); } else { // Permission Denied Toast.makeText(MainActivity.this, "Permission Denied", Toast.LENGTH_SHORT).show(); } return; } super.onRequestPermissionsResult(requestCode, permissions, grantResults); } void choosePhoto(){ /** * 打开选择图片的界面 */ Intent intent = new Intent(Intent.ACTION_PICK); intent.setType("image/*");//相片类型 startActivityForResult(intent, REQUEST_CODE_PICK_IMAGE); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); switch (requestCode){ case REQUEST_CODE_PICK_IMAGE: if (resultCode == RESULT_OK) { try { /** * 该uri是上一个Activity返回的 */ Uri uri = data.getData(); Bitmap bit = BitmapFactory.decodeStream(getContentResolver().openInputStream(uri)); iv.setImageBitmap(bit); } catch (Exception e) { e.printStackTrace(); Log.d("tag", e.getMessage()); Toast.makeText(this,"程序崩溃",Toast.LENGTH_SHORT).show(); } } break; } } }
android 6.0运行时权限应用之图库图片选取
最新推荐文章于 2024-08-14 02:15:31 发布