1. 程式人生 > >android 6.0執行時許可權應用之相簿圖片選取

android 6.0執行時許可權應用之相簿圖片選取

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.檢查許可權 *這裡涉及到一個
APIContextCompat.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 resultint型申請碼) * 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; } } }