개인과제에 개인적으로 스플래시 화면을 구현했다.
캐릭터는 LG Sakers의 꼬마챔비!
스플래시 화면이 깜찍해서 좋았는데 한가지 문제가 생겼다...😫
에뮬레이터의 앱 아이콘를 확인하니까 2개다ㅠㅜㅠㅜㅠㅠ
왜 이렇게 된걸까😂
우선 에뮬레이터에 설치된 앱을 삭제해보자!
설정에 들어가서 앱을 삭제하니까 2개 다 사라졌다.
하나만 삭제하고 싶었는데...
이건 에뮬레이터의 오류가 아니라 내 코드에 문제라는 것을 알아차렸다.
구글링을 해봐도 나같은 경우가 안보여서 ChatGPT한테 물어봤다.
그랬더니 아래처럼 답을 했다.
읽어보니까 나의 경우에는 2번에 해당되었다.
스플래시 액티비티를 추가한 후 AndroidManifest.xml
에 런처 액티비티를 설정했는데 중복 설정을 한 것이었다.
아래는 내 코드의 일부이다.
<manifest
...>
<application
...>
<activity
android:name=".SplashActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
...
<activity
android:name=".SignInActivity"
android:exported="true"
android:windowSoftInputMode="stateHidden">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
SplashActivity
와 SignInActivity
두 개의 액티비티에 모두 런처 아이콘으로 설정되어 있다.
런처 아이콘으로 설정된 액티비티는 앱 아이콘으로 표시되므로, 두 개의 액티비티가 모두 설정되어 있으면 앱 아이콘이 2개가 표시될 수 있다.
그러면 스플래시 화면을 사용하면서 앱 아이콘은 1개만 표시되게 하려면 어떻게 해야 할까?
앱을 시작했을때 SplashActivity
이 나오고 SignInActivity
로 넘어가게 할거니까 SignInActivity
의<intent-filter>
부분을 제거하여 런처 아이콘이 중복되지 않도록 해야 한다.
<manifest
...>
<application
...>
<activity
android:name=".SplashActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
...
<activity
android:name=".SignInActivity"
android:exported="false"
android:windowSoftInputMode="stateHidden" />
</application>
</manifest>
SignInActivity
에 있던 <intent-filter>
부분을 삭제하고
android:exported
를 "true"
에서 "false"
로 수정했다.
수정이 끝난 후 다시 실행시켜보니 이제 앱 아이콘이 1개이고 스플래시 화면도 그대로 잘 작동된다!!!
유익한 자료 감사합니다.