2013-06-24 4 views
2

홈 교체 앱을 만들려고하고 있지만 문제가 많습니다. 앱을 처음 실행하면 기본 설정을 구성 할 수있는 몇 가지 설정 화면을 살펴볼 수 있습니다. 이 작업을 마치면 홈 화면 활동을 시작하게됩니다. 의 AndroidManifest.xml에서 나는 다음과 같은 포함했다 : 홈 화면 활동에서집 교체 앱을 만들려고합니까?

<activity android:name="HomeScreenMain" 
       android:theme="@style/Theme" 
       android:launchMode="singleInstance" 
       android:stateNotNeeded="true"> 
    <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> 

, 나는 다음과 같은 방법을 포함했다 : 홈 화면의 활동 또한

protected void onNewIntent(Intent intent) { 
    super.onNewIntent(intent); 
    if (Intent.ACTION_MAIN.equals(intent.getAction())) { 
     getWindow().closeAllPanels(); 
    } 
} 
public void onDestroy() { 
    super.onDestroy(); 
} 

을, 나는 효과적으로 종료 버튼을 전체 애플 리케이션. 연관된 코드는 다음과 같습니다

public void exitApp(View view){ 
    this.finish(); 
    Intent intent = new Intent(Intent.ACTION_MAIN); 
    intent.addCategory(Intent.CATEGORY_HOME); 
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    startActivity(intent); 
} 

그래서 기본적으로 내가 원하는 당신은 홈 화면 활동에 처음 도착할 때, 프롬프트이 내가하지 않는 한 발생하지 않습니다 (기본 홈 화면을 선택하라는 온다이다 홈 버튼을 누르십시오. 활동이 시작되자 마자 바로 이런 일이 일어나기를 바랍니다.) 일단 기본 홈 화면으로 설정하면 작동하지만 근본적으로 만 가능합니다. 홈 버튼을 누르면 다시이 활동으로 돌아 오지만 나가기 버튼을 누르면 재고 홈 런처로 돌아 가지 않습니다. 이것은 내가 원하는 것입니다.

답변

0

먼저 매니페스트는
입니다.하지만 exitApp에서 활동을 마치시겠습니까? 코드 당신이 그것을 완료 후 다시 시작에서
.. (예상대로)

홈 버튼을 누르면이 활동에 날 다시 가져다
하지만 종료 버튼을 누를 때, 나는 '돈 주식 실행기로 돌아가려면
내가 원하는 것입니다. 사용자가 다른 홈 교체 기기 응용 프로그램 (예 : Go Launcher Ex)를 설치 한 경우 사용자가 앱에 디폴트 전에 기본 Go Launcher을 설정 한 경우


하고,
당신은 이동로 돌아가려면 실행기 예, 맞죠?
예라고 가정합니다.

이,부분적으로 가능하다
당신이 할 수있는 홈 런처
이 실행 종료 후
를 사용하는 사용자 메시지를 표시한다 : 그러니까 기본적으로

import android.content.pm.PackageManager; 

public void exitApp() 
{ 
    //call this method to exit _CLEARLY_, 
    //and prompt the user which launcher to use next 

    //clear the default for your app (to show the prompt when exiting) 
    final PackageManager pm = getPackageManager(); 
    pm.clearPackagePreferredActivities(getApplicationContext().getPackageName()); 

    //exit _CLEARLY_ 
    //calling finish(); would be ok also, 
    //but there would stay a 'zombie' in the dalvik cache 
    //and 'zombies' only use up your memory, so kill your entire app: 
    android.os.Process.killProcess(android.os.Process.myPid()); 
} 

무엇 홈타임에 도착하면
액티비티가 시작됩니다. e,
기본 홈 화면을 선택하라는 메시지가 나타납니다. (홈
버튼을 누르지 않으면 이런 일이 발생하지 않습니다. 활동이 시작되자 마자 일어나야합니다.)


그것은 Intent.CATEGORY_HOME과 의도를 호출하여 homeButton의 프레스 시뮬레이션, onCreate()에서이 함수를 호출 :

public void showPrompt() 
{ 
    Intent i = new Intent(Intent.ACTION_MAIN); 
    i.addCategory(Intent.CATEGORY_HOME); 
    startActivity(i); 
} 

희망이 당신이

+0

는 흠이 대부분 작동 싶었던 것입니다. 당신이 제안한 것처럼 프롬프트가 잘 나타나지만 출구 메커니즘은 이상합니다. 내가 알아낼 수 없다면 좀 더 실험하고 후속 질문을 게시 할 것입니다. 고마워, 이것은 매우 도움이되었다. – scibor