스마트기기개발관련/안드로이드 개발

안드로이드 android 기본 런쳐 확인 및 런쳐 기본 설정 해제 방법

AlrepondTech 2016. 7. 12. 10:40
반응형

 

 

=================================

=================================

=================================

 

 

 

 

 

 

 

출처: 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);
}

 

 

 

 

=================================

=================================

=================================

 

 

 

반응형