2013-03-21 6 views
0

사용자가 집을 클릭하면 실행 프로그램을 선택할 수 있으며 기본값으로 설정할지 여부도 선택할 수 있습니다. 문제는 나중에 다시 변경하기가 어렵다는 것입니다.기본 런처/홈 화면 대체 방법을 재설정하는 방법은 무엇입니까?

이 문제를 해결하려면 내가 추가 된이 트리거 "선호 실행 재설정"

getPackageManager().clearPackagePreferredActivities(getPackageName()); 

그러나이 선은 그가 내 실행을 선택한 경우 선호하는 실행 프로그램을 재설정합니다. 원하는 실행기를 지우는 스 니펫이 필요합니다. 다음 번에 사용자가 집을 클릭하면 다시 옵션이 제공됩니다.

답변

11

직접 가능하지 않으며 Android 개발자는 사용자의 취향을 변경하는 앱을 원하지 않는다고 말했습니다. 그러나 Android가 이러한 환경 설정을 유지하는 방법에 기반한 해결 방법이 있습니다. 간단하게하기 위해서

<activity 
     android:name="MyLauncherActivity" 
     android:exported="true" /> 

    <activity-alias 
     android:name="LauncherAlias1" 
     android:targetActivity="MyLauncherActivity" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.HOME" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
    </activity-alias> 

    <activity-alias 
     android:name="LauncherAlias2" 
     android:enabled="false" 
     android:targetActivity="MyLauncherActivity" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.HOME" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
    </activity-alias> 

, 내가 손 작업과 관련이없는 추가 속성을 남겨 두었다 :

이 같은 매니페스트 모습합니다. 매니페스트는 다음과 같습니다 일단

어쨌든,이 같은 코드를 사용하여 기본 실행을 취소 할 수 있습니다

PackageManager pm = getPackageManager(); 
    ComponentName cn1 = new ComponentName("com.mypackage", "com.mypackage.LauncherAlias1"); 
    ComponentName cn2 = new ComponentName("com.mypackage", "com.mypackage.LauncherAlias2"); 
    int dis = PackageManager.COMPONENT_ENABLED_STATE_DISABLED; 
    if(pm.getComponentEnabledSetting(cn1) == dis) dis = 3 - dis; 
    pm.setComponentEnabledSetting(cn1, dis, PackageManager.DONT_KILL_APP); 
    pm.setComponentEnabledSetting(cn2, 3 - dis, PackageManager.DONT_KILL_APP); 

하나의 별칭을 활성화하고 다른 사람을 비활성화하면 변경 한 것으로 사용자의 옵션을 인식하는 안드로이드의 원인 마치 하나의 런처를 설치하고 다른 런처를 제거한 것과 같습니다. 따라서 다음에 집 버튼을 누르면 다시 선택하라는 메시지가 표시됩니다. 이 방법은 현재 실행기가 누구인지에 관계없이 작동합니다.

+0

나는 사용자 환경 설정을 변경하는 응용 프로그램을 원하지 않는 안드로이드 개발자를 이해하지만, 약 수행 할 것이없는 기본 앱을 관리 할 수있는 중앙 장소의 부족은 – lisovaccaro

+0

내가 오히려 동의 말도 있지만, 장치를 응원의 짧은 그것. –

+0

나는 (흰색 배경을 테마에 추가 한) 더 많은 테스트를 수행했지만 애니메이션은 흰색 배경을 보았으므로 테마가 작동합니다 (활동이 페이드 인/페이 아웃). 왜 이런 일이 일어나는 지 전혀 모르겠습니다. – lisovaccaro

1

별칭 활동으로 인해 기본 런처를 가져올 때 실행 프로그램에서 두 가지 항목을 제공하는 것과 같은 몇 가지 문제가 발생합니다.

내 솔루션은 다음과 같습니다. how to make the Launcher-Pick-Up popup window showing?

+0

이것은 놀랍게도 저에게 효과적입니다 !! –