반응형
앱을 만들때 위험 권한의 경우 사용자에게 요청을 하고 허용을 했을 경우에만 사용할 수 있는데요
위험 권한 중 파일 읽기, 쓰기에 대한 권한을 요청하고 확인하는 예제를 만들어보겠습니다.
위험 권한의 범위, 자세한 내용이 궁금하신분은 여기를 눌러서 확인해주세요.
레이아웃은 생성한 그대로 뒀기 때문에 올리지 않겠습니다.
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+ " ";
}
다음 포스팅에서는 파일 읽기 권한을 이용해서 앨범에 있는 사진을 불러오는 예제를 만들어보겠습니다.
반응형
'안드로이드 > 코드' 카테고리의 다른 글
[안드로이드] 위험 권한 요청후 갤러리 사진 가져오기 (0) | 2020.01.03 |
---|---|
[안드로이드] Volley, Json을 이용해서 로또 당첨번호 조회하기 (0) | 2020.01.02 |
[안드로이드] 페이지 슬라이딩 애니메이션 사용하기 - AnimationListener, Animation, Animation (0) | 2019.12.26 |
[안드로이드] 상단 알림창에 알림 띄우기 2 (이벤트 추가) - Notification, Intent, PendingIntent (0) | 2019.12.24 |
[안드로이드] 상단 알림창에 알림 띄우기1 - Notification (0) | 2019.12.20 |