본문 바로가기

Android/Function

안드로이드 Manifest intent-filter 동적으로 비활성화하기

728x90
반응형

 

앱을 런처로 만들어주는 intent-filter를 추가하였습니다.

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

 

특정 빌드버전에서는 이를 비활성화 하고 싶었습니다.

위의 intent-filter를 따로 빼서 activity-alias에 넣어줍니다.

<action android:name="android.intent.action.MAIN" />

다만, 위의 한줄도 같이 넣어주어야 런처 홈화면으로 작동하더라는..

 

<activity
      android:name=".ui.main.MainActivity"
      android:screenOrientation="portrait">
      <intent-filter>
           <action android:name="android.intent.action.MAIN" />
           <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>

</activity>

<activity-alias
      android:name=".AliasMainActivity"
      android:targetActivity=".ui.main.MainActivity">
      <intent-filter>
      	   <action android:name="android.intent.action.MAIN" />
           <category android:name="android.intent.category.DEFAULT"/>
           <category android:name="android.intent.category.HOME"/>
      </intent-filter>
</activity-alias>

 

시작 Activity의 onCreate에서 다음과 같이 추가해주어 활성화/비활성화가 가능합니다.

 

  • 비활성화
packageManager.setComponentEnabledSetting(
      ComponentName(packageName, "$packageName.AliasMainActivity"),
      PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP
)

 

  • 활성화
packageManager.setComponentEnabledSetting(
       ComponentName(packageName, "$packageName.AliasMainActivity"),
       PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP
)

 

 

 

 

728x90
반응형