반응형

출처:https://ykyh.tistory.com/4


우선 안드로이드M 이 공개 되면서 여러 변경되거나 추가된 내용 중에서 개인적으로 개발자가 가장 신경써야 할 부분은 "권한"에 대한 부분이라고 생각되어 퍼미션에 대해 제일 먼저 다루겠습니다.


Android Developer

우선 자세한 내용은 Android Developer 사이트에서 자세히 설명해 주고 있고, 안드로이드M에 대해서는 무려 한글페이지를 제공해 주고 있습니다!!!!!!!!!!!!!!!


안드로이드M 이하 버전의 경우 특정 기능을 사용하기 위해서 <uses-permission..>만 정의 하고 설치 시 안드로이드 인스톨러에서 사용자에게 고지 하도록 되어 있습니다.시 안드로이드 인스톨러에서 사용자에게 고지 하도록 되어 있습니다., 


안드로이드M 에서는 퍼미션을 사용하는 시점에 사용자에게 퍼미션 사용여부를 고지 하고 사용자가 동의해야만 사용할 수 있습니다

모든 퍼미션이 이렇게 사용해야 되는 것은 아니고, 개인정보와 관련된 몇몇 퍼미션에 관해서 별도의 처리를 해줘야 합니다.


Developer 사이트에 정의되어있는 별도로 퍼미션 처리를 해줘야하는 퍼미션은 다음과 같습니다.


권한 그룹권한
android.permission-group.CALENDAR
  • android.permission.READ_CALENDAR
  • android.permission.WRITE_CALENDAR
android.permission-group.CAMERA
  • android.permission.CAMERA
android.permission-group.CONTACTS
  • android.permission.READ_CONTACTS
  • android.permission.WRITE_CONTACTS
  • android.permission.READ_PROFILE
  • android.permission.WRITE_PROFILE
android.permission-group.LOCATION
  • android.permission.ACCESS_FINE_LOCATION
  • android.permission.ACCESS_COARSE_LOCATION
android.permission-group.MICROPHONE
  • android.permission.RECORD_AUDIO
android.permission-group.PHONE
  • android.permission.READ_PHONE_STATE
  • android.permission.CALL_PHONE
  • android.permission.READ_CALL_LOG
  • android.permission.WRITE_CALL_LOG
  • com.android.voicemail.permission.ADD_VOICEMAIL
  • android.permission.USE_SIP
  • android.permission.PROCESS_OUTGOING_CALLS
android.permission-group.SENSORS
  • android.permission.BODY_SENSORS
  • android.permission.USE_FINGERPRINT
android.permission-group.SMS
  • android.permission.SEND_SMS
  • android.permission.RECEIVE_SMS
  • android.permission.READ_SMS
  • android.permission.RECEIVE_WAP_PUSH
  • android.permission.RECEIVE_MMS
  • android.permission.READ_CELL_BROADCASTS


개발 방법

테스트로 아래의 두 퍼미션을 정의하며, "android.permission.CALL_PHONE" 의 경우 사용자의 확인이 필요한 퍼미션이고, "android.permission.ACCESS_WIFI_STATE"의 경우 확인이 필요 없는 퍼미션 입니다.


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

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


앱을 설치 하고 안드로이드 설정에서 애플리케이션에셔 보면 CALL_PHONE 에 관해서는 사용자가 퍼미션을 ON/OFF 처리 할 수 있도록 되있습니다. 

 

이제 우리가(개발자들) 해야할일이 생겼죠...!

1. 설정에서 퍼미션 사용이 ON으로 되어있는지 확인

 - checkSelfPermission(String permission)


2. 퍼미션 사용 요청

 - requestPermissions(String[] permissions, int requestCode)

requestPermissions 메서드를 호출 하면 팝업이 뜨면서 사용자에게 퍼미션을 허용을 요청 하게 됩니다.

사용자가 동의 버튼을 선택 할 경우 앱 설정에 퍼미션이 ON으로 바뀌게 됩니다.


 


3. 사용자 응답에 따른 결과 받기

 -  onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults)

PERMISSION_GRANTED 응답을 받았다면, 요청한 퍼미션에 대한 작업을 하시면 됩니다.


예제 소스

아래 테스트 예제를 보시면 쉽게 이해 되실겁니다.


 private final int MY_PERMISSIONS_REQUEST_CALL_PHONE = 1000;

private View.OnClickListener buttonListener = new View.OnClickListener() {
    @Override
    public void onClick(View view) {

        switch (view.getId()) {
            case R.id.BT_CALL_PHONE :

                if (checkSelfPermission(Manifest.permission.CALL_PHONE)
                        != PackageManager.PERMISSION_GRANTED) {
                    requestPermissions(new String[]{Manifest.permission.CALL_PHONE},
                            MY_PERMISSIONS_REQUEST_CALL_PHONE);
                    return;
                } else {
                    callPhone();
                }
                break;

            default:
                break;
        }

    }
};

@Override
public void onRequestPermissionsResult(int requestCode,
                                       String permissions[], int[] grantResults) {
    switch (requestCode) {
        case MY_PERMISSIONS_REQUEST_CALL_PHONE: {
            if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {

                // permission was granted, yay! do the
                // calendar task you need to do.
                callPhone();
            } else {

                // permission denied, boo! Disable the
                // functionality that depends on this permission.
                Toast.makeText(this, "NOT GRANTED", Toast.LENGTH_LONG).show();
            }
            return;
        }

        // other 'switch' lines to check for other
        // permissions this app might request
    }
}
private void callPhone() {
    Intent i = new Intent(Intent.ACTION_CALL, Uri.parse("tel:010-1234-5678"));
    startActivity(i);
}

 



출처: https://ykyh.tistory.com/4 [요콩 공부방]



반응형
반응형

unresolved reference for ViewModelProviders 문제 해결하기



Just add these 2 lines to the proper build.gradle:

1
2
implementation "android.arch.lifecycle:extensions:1.1.1"
annotationProcessor "android.arch.lifecycle:compiler:1.1.1"


반응형
반응형

사이트

안드로이드 색깔 정해주는 사이트

Color Tool - Material Design
An interactive tool to create, share, and apply color palettes to your UI, as well as measure the accessibility level…material.io

머티리얼 아이콘 다운로드 사이트

Material icons - Material Design
Material icons are beautifully crafted, delightful, and easy to use in your web, Android, and iOS projects.material.io

안드로이드 앱 아이콘 만드는 사이트

Android Material Icon Generator
The icon, the material shadow and all effects are created in SVG!android-material-icon-generator.bitdroid.de

Android Asset Studio
A collection of tools to easily generate assets such as launcher icons for your Android app.romannurik.github.io

아이콘 라이브러리

Orion Icon Library
The best Icon Tool. 6507 Free SVG & PNG Icons. Search, organize, edit and download our highly flexible Icons.orioniconlibrary.com

구글 머티리얼 디자인 가이드 라인 (영어)

영어를 몰라도 Components 탭으로 가시면 많은 정보를 알 수 있을겁니다.

Introduction - Material Design
Create a visual language that synthesizes classic principles of good design with the innovation and possibility of…material.io

사진 최적화 사이트 (.png / .jpg)

TinyPNG - Compress PNG images while preserving transparency
Make your website faster and save bandwidth. TinyPNG optimizes your PNG images by 50-80% while preserving full…tinypng.com

온라인 이미지 편집 툴

iLoveIMG | 쉽고 빠른 온라인 무료 이미지 편집 툴
신속하게 파일 수정이 가능한 무료 이미지 편집 툴 iLoveIMG. 잘라내기, 크기 조정, 압축, 변환 등의 작업을 진행해 보세요!www.iloveimg.com

다양한 아이콘들을 모아둔 사이트

Icongram: icons on the fly 🚀
Icongram serves you 5114 icons from your favourite icon library on the fly 🚀.icongr.am

Font Awesome 5
Font Awesome makes it easy to add vector icons and social logos to your website. And version 5 is redesigned and built…fontawesome.com

68,700 Free Icons - The Largest Icon Pack Ever
Single icon pack with 68,700 free icons. Each icon is in 5 flat styles. Download as PNG, SVG, or as a font.ko.icons8.com

사람이 봤을 때 조화로운 색

ColorBrewer: Color Advice for Maps
Edit descriptioncolorbrewer2.org

머티리얼 컬러 파레트

Colorion
Curated Color Palettes with Search and Tags Supportmaterial.colorion.co

머티리얼 테마 에디터

Theme Editor Home
The Material Theme Editor helps you make your own branded symbol library and apply global style changes to color…material.io

Gallery

개발자와 디자이너 간 협업 툴

Gallery Home
Gallery is a collaborative tool for uploading design work, getting feedback, and tracking revisions - quickly and…material.io

머티리얼 컴포넌트 + 사용법(Docs)

Develop for Android
Build beautiful, usable products faster. Material Design is an adaptable system-backed by open-source code-that helps…material.io


오픈소스 모음 사이트

오픈소스 라이브러리 Best 27

초보 개발자를 위한 안드로이드 오픈 소스 라이브러리 Best 27
어플리케이션(프로그램)을 개발할 때 오픈 소스를 사용하는 것은 시간을 절약할 수 있으며 버그를 줄일 수 있는 효과적인 방법 입니다. 자동차를 만드는것에 비유하자면, 바퀴부터 발명해서 자동차를 만드는 것 보다 이미…aedi.tistory.com

징그럽게 많음 렉 주의;;

wasabeef/awesome-android-ui
awesome-android-ui - A curated list of awesome Android UI/UX librariesgithub.com

깔끔하게 정리 되있음

Android UI OpenSource
Collection of OpenSource for Android UI.kmshack.github.io


 

 

 

 

출처: https://medium.com/wasd/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-%EA%B0%9C%EB%B0%9C%EC%97%90-%EB%8F%84%EC%9B%80-%EB%90%AC%EC%9C%BC%EB%A9%B4-%ED%95%98%EB%8A%94-%EA%B2%83%EB%93%A4-%EC%82%AC%EC%9D%B4%ED%8A%B8-da84e2d60f0f

반응형
반응형

출처: https://comoi.io/156 [코모스튜디오]

 

Gradle에서 이 에러가 나온다면 

Plugin with id 'com.android.application' not found.

 

build.gradle에

buildscript {

    repositories {

        jcenter() // or mavenCentral()

    }

 

    dependencies {

        classpath 'com.android.tools.build:gradle:1.5.0'

    }

}

 

를 추가 해주면 된다.

 

그래도 에러가 계속 난다면?

 

 

위 노랑이의 위치를 

 

apply plugin: "com.android.application"

바로 위로 옮기면 된다.



출처: https://comoi.io/156 [코모스튜디오]

반응형

+ Recent posts