반응형
=================================
=================================
=================================
출처: http://m.blog.naver.com/estern/220013423230
기본 런쳐 확인 및 런쳐 기본 설정 해제 방법
1. 기본 런쳐 패키지 정보 조회
Intent intent=new Intent(); intent.setAction(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_HOME); final ResolveInfo mInfo = manager.resolveActivity(intent, 0); System.out.println("Default Lancher is " + mInfo.activityInfo.applicationInfo.packageName); |
2. 기본 런쳐 여부 확인
boolean isDefaultLauncher() { IntentFilter filter = new IntentFilter(Intent.ACTION_MAIN); filter.addCategory(Intent.CATEGORY_HOME); List<IntentFilter> filters = new ArrayList<IntentFilter>(); filters.add(filter); final String myPackageName = getPackageName(); List<ComponentName> activities = new ArrayList<ComponentName>(); final PackageManager packageManager = (PackageManager) getPackageManager(); packageManager.getPreferredActivities(filters, activities, null); for (ComponentName activity : activities) { if (myPackageName.equals(activity.getPackageName())) { return true; } } return false; } |
3. 가짜 홈 Activity를 이용한 기본 런쳐 설정 해제
홈 Activity가 enable/disable(설치 및 설치 해제 등)되면 안드로이드 시스템이 홈 변경이 있다고 판단하여 홈 선택 창을 띄운다.
이를 이용하여 아래와 같이 가짜 홈을 만들어 enable/disable을 변경하여 홈의 디폴트 설정을 해제하는 것과 같은 효과를 내도록 한다.
<activity android:name="com.oneman.DummyHome" android:enabled="false"> <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> |
아래 코드를 이용하여 가짜 홈 Activity의 enable 상태를 변경한다.
ComponentName componentName = new ComponentName(MyActivity.this, DummyHome.class); if (!isDefaultLauncher()) { Log.e(TAG, "MyActivity is not default home activity!"); // 가짜 홈 Activity의 enable 상태를 변경한다. PackageManager pm = getPackageManager(); int flag = ((pm.getComponentEnabledSetting(componentName) == PackageManager.COMPONENT_ENABLED_STATE_ENABLED) ? PackageManager.COMPONENT_ENABLED_STATE_DISABLED : PackageManager.COMPONENT_ENABLED_STATE_ENABLED); pm.setComponentEnabledSetting(componentName, flag, PackageManager.DONT_KILL_APP); // 홈 Activty 요청하여 홈 선택 창이 오픈 되도록 한다. Intent selector = new Intent(Intent.ACTION_MAIN); selector.addCategory(Intent.CATEGORY_HOME); startActivity(selector); } |
=================================
=================================
=================================
반응형
'스마트기기개발관련 > 안드로이드 개발' 카테고리의 다른 글
[android] 안드로이드 android 여러업체들의 결제 모듈 관련 (0) | 2016.07.13 |
---|---|
[android] 안드로이드 android How to reset default launcher/home screen replacement? (0) | 2016.07.12 |
안드로이드 android 다양한 앱 종료 방법 관련 (0) | 2016.07.11 |
안드로이드[Android] EditText 자동 포커스 제거 (0) | 2016.07.08 |
안드로이드 android apk 앱 설치시 아이콘 숨기기 관련 (0) | 2016.07.07 |