2013-06-24 4 views
2

Я пытаюсь сделать приложение для замены дома, но я столкнулся с кучей глюков. Когда приложение запускается в первый раз, вы просматриваете несколько экранов настройки, которые позволяют вам настраивать основные настройки. Как только вы закончите с этим, вы перейдете к активности HomeScreen. В 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> 

В Homescreen деятельности, я включил следующие методы:

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

Также в Homescreen активности, у меня есть кнопка, которая эффективно выходит все приложение. Соответствующий код:

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); 
} 

Поэтому в основном то, что я хочу, что, когда вы дойдете до Homescreen активности в первый раз, подсказка приходит говорит вам, чтобы выбрать Начальный экран по умолчанию (это не произойдет, если я нажмите кнопку «Главная», я хочу, чтобы это произошло, как только начнется действие). Как только я установил это как мой начальный экран по умолчанию, он работает, но только в основном. Нажатие кнопки «домой» возвращает меня к этой активности (как и должно быть), но когда я нажимаю кнопку «Выход», я не возвращаюсь к фонду Home Launcher, чего я хочу.

ответ

0

Во-первых, ваш манифест в порядке,
, но в вашем exitApp вы хотите закончить деятельность, не так ли?
в своем коде вы закончить его, а затем запустить его снова ..

Нажатие кнопки домой возвращает меня к этой деятельности (как это должно быть),
, но когда я нажимаю на кнопку Выход, я не» t возвращаются на склад Launcher,
, что я хочу.

если пользователь установил другой дом Replacment приложение (например Go Launcher Ex)
и если пользователь установил Go Launcher по умолчанию перед тем недобросовестный к вашему приложению,
вы хотите вернуться к Go Launcher Ex, правильно?
Я предполагаю, что да.

Это частично возможно,
, что вы можете сделать, это запрашивая пользователя который домой пусковая использовать
после выхода из вашего запуска:

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()); 
} 

Поэтому в основном то, что Я хочу, чтобы когда вы дошли до HomeScreen
активность первого тайма e, появляется подсказка, указывающая вам выбрать свой домашний экран
(этого не произойдет, если я не нажму кнопку
Button, я хочу, чтобы это произошло, как только начнется действие).

затем вызвать эту функцию в onCreate(),
он имитирует homebutton прессу, вызвав намерение с Intent.CATEGORY_HOME:

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

Надежда это то, что вы хотели

+0

Ммм это в основном работает. Приглашение подходит просто отлично, как вы предполагали, но механизм выхода глючит. Я еще экспериментирую и поставил следующий вопрос, если не могу понять. Спасибо, хотя это было очень полезно. – scibor