2014-09-23 1 views
2

외부 sdcard에 저장된 .apk 파일에서 홈 응용 프로그램을 업그레이드하려고합니다. 그러나 벨로우즈 오류가 무한대로 표시되면 장치가 다시 부팅됩니다..apk 파일에서 홈 런처 앱을 업그레이드하십시오.

09-25 11:58:44.040: I/ActivityManager(1313): Force finishing activity ActivityRecord{4238d680 u0 com.jkpark.cluster/.MainActivity} 
09-25 11:58:44.040: I/ActivityManager(1313): START u0 {act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10000000 cmp=com.jkpark.cluster/.MainActivity} from pid 0 

나는 내 집에 응용 프로그램을 다시 설치 이벤트를 호출하려면 어떤 집 인앱 ActivityManager 시작 생각하지만, 다른 어떤 홈 응용 프로그램이 존재하지 않습니다. 그래서 ActivityManager 강제로 시작한 다음 다시 시작하고 다시 home app을 호출합니다.

"android.intent.category.HOME"으로 분류 된 다른 홈 응용 프로그램을 설치하고 홈 응용 프로그램을 업그레이드하면 정상적으로 작동합니다.

하지만 다른 가정용 앱을 설치하지 않고도 업그레이드하고 싶습니다. 그래서 누구나 제발 도와주세요. 감사합니다. 나는 u는 단지 시스템 홈 화면 응용 프로그램을 제거 할 만 기본 런처로 UR 응용 프로그램을 원한다고 생각

+0

___ "다른 가정용 응용 프로그램을 설치하지 않고도 업그레이드하고 싶습니다."___ ** 다른 집이 설치되어 있지 않다면 무엇을 의미합니까? 당신은 가정용 응용 프로그램을 rom의 기본 홈 응용 프로그램으로 만들고 싶습니다. 그렇다면이 질문은 http://android.stackexchange.com/에 더 적합 할 것이라고 생각합니다. – SMR

답변

1

비슷한 문제가있었습니다. 런처 업데이트 프로세스 동안 안드로이드 OS는 실행할 홈 액티비티가 없습니다. 이것은 하나의 스레드가 설치되고 하나의 스레드가 같은 시간에 런처를 실행하려고하기 때문에 발생합니다. 이 런처는 다른 런처를 생성하여 쉽게 해결할 수 있으며 런처 스위처라고 부를 수 있습니다. 이 런처에는 원래 louncher를 실행하는 유일한 목적이 있습니다. 저의 작품처럼 매력적입니다. 이것은 런처 스위처 용 코드입니다.

private void runLauncher() { 
    if(isMyLauncherDefault()) { 
     unsetThisLauncherAsDefault(); 
    } 

    final Handler handler = new Handler(); 
    handler.postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      Intent LaunchIntent = getPackageManager().getLaunchIntentForPackage(LAUNCHER_PACKAGE); 
      startActivity(LaunchIntent); 
     } 
    }, TWO_SECONDS_IN_MILLISECONDS); 
} 

private boolean isMyLauncherDefault() { 
    final 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>(); 
    PackageManager packageManager = (PackageManager) getPackageManager(); 

    packageManager.getPreferredActivities(filters, activities, LAUNCHER_SWITCHER_PACKAGE); 

    if(activities.size() == NO_LAUNCHER) 
     return true; 

    for (ComponentName activity : activities) { 
     if (myPackageName.equals(activity.getPackageName())) { 
      return true; 
     } 
    } 
    return false; 
} 

private void unsetThisLauncherAsDefault() { 
    getPackageManager().clearPackagePreferredActivities(getPackageName()); 
} 
+0

내 앱을 제거 할 때 실행할 다른 앱을 만들었습니다. 고맙습니다 –

0

.. u는 시스템 응용 프로그램을 제거하는 장치를 근절해야하는 경우

.. 안드로이드 환경에서 그것은이다 루트 액세스없이 시스템 앱을 제거 할 수 없습니다.

관련 문제