본문 바로가기

안드로이드/코드

[안드로이드] 위험 권한 요청, 확인 하기

반응형

 

 

 

 

위험 권한 요청 1

 

 

앱을 만들때 위험 권한의 경우 사용자에게 요청을 하고 허용을 했을 경우에만 사용할 수 있는데요

위험 권한 중 파일 읽기, 쓰기에 대한 권한을 요청하고 확인하는 예제를 만들어보겠습니다.

위험 권한의 범위, 자세한 내용이 궁금하신분은 여기를 눌러서 확인해주세요.

 

레이아웃은 생성한 그대로 뒀기 때문에 올리지 않겠습니다.

 

 

1. AndroidManifest.xml

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

파일 읽기 쓰기 권한을 매니페스트에 등록해줍니다.

 

 

2. MainActivity.java

package com.everyshare.permissiontest;

import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;

public class MainActivity extends AppCompatActivity {



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        checkSelfPermission();
    }


    //권한에 대한 응답이 있을때 작동하는 함수
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {

        //권한을 허용 했을 경우
        if(requestCode == 1){
            int length = permissions.length;
            for (int i = 0; i < length; i++) {
                if (grantResults[i] == PackageManager.PERMISSION_GRANTED) {
                    // 동의
                    Log.d("MainActivity","권한 허용 : " + permissions[i]);
                }
            }
        }


    }

    public void checkSelfPermission() {

        String temp = "";

        //파일 읽기 권한 확인
        if (ContextCompat.checkSelfPermission(this,
                Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
            temp += Manifest.permission.READ_EXTERNAL_STORAGE + " ";
        }

        //파일 쓰기 권한 확인
        if (ContextCompat.checkSelfPermission(this,
                Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
            temp += Manifest.permission.WRITE_EXTERNAL_STORAGE + " ";
        }


        if (TextUtils.isEmpty(temp) == false) {
            // 권한 요청
            ActivityCompat.requestPermissions(this, temp.trim().split(" "),1);
        }else {
            // 모두 허용 상태
            Toast.makeText(this, "권한을 모두 허용", Toast.LENGTH_SHORT).show();
        }
    }
}

 

추가로 카메라, 진동, 연락처, 문자 등의 권한을 추가하시려면 checkSelfPermission() 함수 안에서 해당 권한을 추가해서 사용해주시면 여러개의 권한을 한번에 요청할 수 있습니다.

 

 

예시 1) 카메라에 대한 권한 요청을 추가할때

if (ContextCompat.checkSelfPermission(this,
Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
temp += Manifest.permission.CAMERA+ " ";
}

 

 

다음 포스팅에서는 파일 읽기 권한을 이용해서 앨범에 있는 사진을 불러오는 예제를 만들어보겠습니다.

 

반응형