본문 바로가기

프로그래밍/안드로이드[Android]

[Android] 안드로이드 앱 초기 실행시 권한 요청하기



안드로이드 앱 초기 실행시 다음과 같이 런타임 권한 요청

 

 

예를 들어 AndroidManifest.xml 에 다음과 같이 권한을 설정해두었으면

 

초기 실행시 해당 권한들에 대한 허용을 받음(인터넷은 자동으로 되어 따로 권한을 받지 않습니다.)

<!-- 인터넷 사용 권한 -->
<uses-permission android:name="android.permission.INTERNET" />

<!-- 알림 사용 권한-->
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>

<!-- 카메라 사용 권한-->
<uses-permission android:name="android.permission.CAMERA"/>

 

 

우선 전체적인 코드는 다음과 같습니다.

 

public class MainActivity extends AppCompatActivity {
    private static final int MULTIPLE_PERMISSION = 10;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //런타임 권한 체크
        if(!hasPermissions(this, PERMISSIONS)){
            //권한이 없는 경우 권한 요청
            ActivityCompat.requestPermissions(this, PERMISSIONS, MULTIPLE_PERMISSION);
        }
    }
    
    //권한 요청 목록 배열 SET
    private String[] PERMISSIONS = {
            Manifest.permission.INTERNET,
            Manifest.permission.POST_NOTIFICATIONS,
            Manifest.permission.CAMERA
    };

    //권한 확인
    public static boolean hasPermissions(Context context, String... permissions){
        if(context != null && permissions != null){
            for(String permission : permissions){
                if(ActivityCompat.checkSelfPermission(context,permission)!=PackageManager.PERMISSION_GRANTED){
                    return false;
                }
            }
        }
        return true;
    }
}

 

 

메소드별 설명을 드리겠습니다.

 

AndroidManifest.xml 에 설정한 권한을 배열로 받습니다.

//권한 요청 목록 배열 SET
private String[] PERMISSIONS = {
        Manifest.permission.INTERNET,
        Manifest.permission.POST_NOTIFICATIONS,
        Manifest.permission.CAMERA
};

 

그리고 권한이 허용되었는지 체크하고 안되어 있으면 권한 요청을 합니다.

//권한 확인
public static boolean hasPermissions(Context context, String... permissions){
    if(context != null && permissions != null){
        for(String permission : permissions){
            if(ActivityCompat.checkSelfPermission(context,permission)!=PackageManager.PERMISSION_GRANTED){
                return false;
            }
        }
    }
    return true;
}

 

간단하게 런타임 권한 요청을 해보았습니다.

 

감사합니다.