투케이2K

35. (TWOK/UTIL) [Android/Java] AndroidManifest.xml - 애플리케이션 설정 및 퍼미션 관리 본문

투케이2K 유틸파일

35. (TWOK/UTIL) [Android/Java] AndroidManifest.xml - 애플리케이션 설정 및 퍼미션 관리

투케이2K 2022. 4. 14. 08:05

[설 명]

프로그램 : Android / Java

설 명 : 애플리케이션 설정 및 퍼미션 관리

 

[소스 코드]

 

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.app.test">
    <!-- 패키지명 설정 실시 -->



    <!-- 네트워크 연결 상태 체크 : 퍼미션 설정 선언 -->
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-feature android:name="android.hardware.location.network"/>





    <!--  WindowManager Token Exception : 퍼미션 설정 선언  -->
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />





    <!--  블루투스 및 GPS : 퍼미션 설정 선언  -->
    <uses-permission android:name="android.permission.BLUETOOTH"/>
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    
    
    
    
    
    <!--블루투스 권한 추가 sdk 31 대응-->
    <uses-permission android:name="android.permission.BLUETOOTH_SCAN"/>
    <uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE"/>
    <uses-permission android:name="android.permission.BLUETOOTH_CONNECT"/>





    <!-- 화면 강제 기상 : 퍼미션 설정 선언 -->
    <uses-permission android:name="android.permission.WAKE_LOCK"/>





    <!-- 진동 기능 : 퍼미션 설정 선언 -->
    <uses-permission android:name="android.permission.VIBRATE"/>





    <!-- 간편 인증 [지문, 패턴] : 퍼미션 설정 선언 -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.USE_FINGERPRINT" />
    <uses-permission android:name="android.permission.USE_BIOMETRIC"/>





    <!-- NFC에서 HCE(호스트 카드) 통신 (유심 사용) : 퍼미션 -->
    <uses-permission android:name="android.permission.NFC"/>
    <uses-feature android:name="android.hardware.nfc" android:required="true" />





    <!-- 앱 실행 충돌 현상 해결 위함 : 삼성 앱 런타임 권한 -->
    <uses-permission android:name="com.sec.android.provider.badge.permission.WRITE"/>





    <!-- 카메라 : QR 스캔 -->
    <uses-permission android:name="android.permission.CAMERA"/>
    <uses-permission android:name="android.permission.ACCESS_MEDIA_LOCATION"/>





    <!-- 외부앱 설치 확인 및 외부앱 열기 패키지 선언 부분 -->
    <!-- 참고 : C_MoveApp 클래스에서 goAppRunNew , goAppSchemeMoveNew 사용 시에도 선언 필요 -->
    <queries>
        <!-- [기본 크롬] -->
        <package android:name="com.android.chrome" /> <!-- [크롬] -->

        <!-- [카카오톡 링크 연동] -->
        <package android:name="com.kakao.talk" /> <!-- [카카오톡] -->
    </queries>





    <!-- 애플리케이션 설정 -->
    <application
        android:name=".S_Application"

        android:allowBackup="false"

        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme"

        android:usesCleartextTraffic="true"

        android:largeHeap="true"

        android:hardwareAccelerated="true"

        android:screenOrientation="portrait"

        android:windowSoftInputMode="adjustPan"

        android:configChanges="keyboardHidden|orientation|screenSize"

        android:extractNativeLibs="true"

        android:requestLegacyExternalStorage="true"

        tools:replace="android:allowBackup">
        <!-- 1) android:allowBackup="false" : 애플리케이션 삭제 후 재설치시 데이터를 초기화 시킨다 -->
        <!-- 2) android:icon="@mipmap/ic_logo" : 앱 설치 시 표시되는 아이콘을 설정한다 -->
        <!-- 3) android:label="@string/app_name" : 앱 설치 시 표시되는 이름을 설정한다 (string.xml 파일) -->
        <!-- 4) android:roundIcon="@mipmap/ic_logo" : 앱 설치 시 표시되는 아이콘을 설정한다 -->
        <!-- 5) android:supportsRtl="true" : RIGHT to LEFT 레이아웃을 지원한다는의미입니다 -->
        <!-- 6) android:theme="@style/AppTheme" : 기본 애플리케이션 및 액티비티 테마, 액션바 표시 여부를 설정한다 (styles.xml 파일) -->
        <!-- 7) android:usesCleartextTraffic="true" : http 를 사용할 수 있다 (보안 강화로 기본적으로 http 접근을 허용하지 않는다) -->
        <!-- 8) android:largeHeap="true" : 기본 애플리케이션 사용 메모리 용량 늘린다 (메모리 누수 위함) -->
        <!-- 9) android:hardwareAccelerated="true" : 기본 애플리케이션 성능 가속화를 허용한다 (모든 그리기 작업에서 GPU를 사용) -->
        <!-- 10) android:excludeFromRecents = "true" : 최근 앱 작업 목록에 남기지 않는다 -->
        <!-- 11) <uses-library android:name="org.apache.http.legacy" android:required="false"/> : apache http 클라이언트 이슈 방지 [application 내부 독립 구성] -->
        <!-- 12) android:screenOrientation="portrait" 항상 앱 화면을 세로 방향으로 표시하겠다-->
        <!-- 13) android:windowSoftInputMode="adjustPan" : 키보드 활성 시 ui 밀림 현상 방지 -->
        <!-- 14) android:configChanges="keyboardHidden|orientation|screenSize" : 액티비티 화면 가로, 세로 간 전환 시 초기화 방지 [1] -->
        <!-- 15) android:configChanges="orientation|keyboardHidden|keyboard|screenSize" : 액티비티 화면 가로, 세로 간 전환 시 초기화 방지 [2] -->
        <!-- 16) android:extractNativeLibs="true" : 액티비티 화면 가로, 세로 간 전환 시 초기화 방지 [2] -->
        <!-- 17) android:requestLegacyExternalStorage="true" : 안드로이드 파일 읽기, 쓰기 접근 허용 -->





        <!-- OS 9.0 이상일때, 해당 부분 추가 -->
        <uses-library
            android:name="org.apache.http.legacy"
            android:required="false" />




        <!-- 로딩 액티비티 -->
        <activity
            android:name=".A_Intro"
            android:exported="true"
            android:screenOrientation="portrait"
            android:windowSoftInputMode="adjustPan"
            android:configChanges="keyboardHidden|orientation|screenSize">
            <!-- 앱 화면 세로 고정 : android:screenOrientation="portrait" -->
            <!-- 키보드 고정 : android:windowSoftInputMode="adjustPan" -->
            <!-- 가상키보드 상태에 따라 리사이징 : android:windowSoftInputMode="adjustResize" -->
            <!-- 앱 스키마 실행 시 앱 중복 실행 방지 : android:launchMode="singleTask" -->


            <!-- 앱 런처 실행 인텐트 필터 등록 -->
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>


            <!-- UrlSchema 스키마 사용위해 인텐트 필터 등록 -->
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />

                <!-- 로그인 연동 : 호스트 , 스키마 -->
                <data
                    android:scheme="test"
                    android:host="login" />

                <!-- 일반 실행 : 호스트 , 스키마 -->
                <data
                    android:scheme="test"
                    android:host="call" />
            </intent-filter>
        </activity>





        <!-- 메인 웹뷰 액티비티 -->
        <activity
            android:name=".A_Main"
            android:exported="true"
            android:screenOrientation="portrait"
            android:windowSoftInputMode="adjustResize"
            android:configChanges="keyboardHidden|orientation|screenSize">
            <!-- 앱 화면 세로 고정 : android:screenOrientation="portrait" -->
            <!-- 키보드 고정 : android:windowSoftInputMode="adjustPan" -->
            <!-- 가상키보드 상태에 따라 리사이징 : android:windowSoftInputMode="adjustResize" -->
        </activity>





        <!-- 서비스 : 사용자 작업 최근 앱 목록 작업 날림 이벤트 감지 -->
        <service
            android:name=".S_ProgramTaskService"
            android:exported="true"
            android:stopWithTask="false" />
        <!-- 사용자가 앱 목록 날림 이벤트 감지 : android:stopWithTask="false" -->


    </application>

</manifest>

 

반응형
Comments