728x90

마시멜로 버전부터는 권한을 일반 권한(Normal Permission)과 위험 권한(Dangerous Permission)으로 나누었으며, 위험 권한의 경우에는 앱이 실행될 때 사용자에게 권한 부여할 것인지 물어보도록 변경되었다.

대표적인 위험권한은 위치, 카메라, 마이크, 연락처, 전화, 문자, 일정, 센서 등이다.


TedPermission 라이브러리를 이용하여 권한체크 하는 방법으로 간단히 이용할 수 있어 편하다.

제작자 블로그 : http://gun0912.tistory.com/


신규 스마트폰은 SDK 버전이 23 이라고 봐도 무방하다.


targetSdkVersion 23 이상으로 설정한 경우
dependencies {
    implementation 'gun0912.ted:tedpermission:2.0.0'
}
추가한다.


사용 예제

import com.gun0912.tedpermission.PermissionListener;
import com.gun0912.tedpermission.TedPermission;

public class MainActivity extends AppCompatActivity {
    Context context;

    PermissionListener permissionlistener = new PermissionListener() {
        @Override
        public void onPermissionGranted() {
            initView(); // 권한이 승인되었을 때 실행할 함수
        }

        @Override
        public void onPermissionDenied(ArrayList<String> deniedPermissions) {
            Toast.makeText(MainActivity.this, "권한 허용을 하지 않으면 서비스를 이용할 수 없습니다.", Toast.LENGTH_SHORT).show();
        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        context = this.getBaseContext();

        checkPermissions();
    }

    private void checkPermissions() {
        if (Build.VERSION.SDK_INT >= 23){ // 마시멜로(안드로이드 6.0) 이상 권한 체크
            TedPermission.with(context)
                    .setPermissionListener(permissionlistener)
                    .setRationaleMessage("이미지를 다루기 위해서는 접근 권한이 필요합니다")
                    .setDeniedMessage("앱에서 요구하는 권한설정이 필요합니다...\n [설정] > [권한] 에서 사용으로 활성화해주세요.")
                    .setPermissions(new String[] { Manifest.permission.READ_EXTERNAL_STORAGE,
                            Manifest.permission.WRITE_EXTERNAL_STORAGE,
                            Manifest.permission.CAMERA})
                    .check();

        } else {
            initView(); // 권한 승인이 필요없을 때 실행할 함수
        }
    }

    private void initView() {
        imageView = (ImageView) findViewById(R.id.croppedImageView);
        imageView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {                

            }
        });
    }

}


필요한 권한을 멀티로 지정해주면 된다.

728x90

'안드로이드 > Android 기능' 카테고리의 다른 글

Android – TextView autoLink attribute  (0) 2018.09.21
Android Notification  (0) 2018.08.24
Android View  (1) 2018.03.20
WindowManager 주요 Flag  (0) 2018.02.24
Transparent Activity floating/draggable on Homscreen  (0) 2018.01.30
블로그 이미지

Link2Me

,