Android. Какое намерение вызывает проблема с домашней кнопкой?

Я хотел бы точно знать, какую операцию выполняет кнопка home home? т.е. какие намерения, целевая категория и действие выдается при нажатии на кнопку "домой"? который возвращается на пустой экран. Я хотел бы знать, что происходит при реализации этой операции при нажатии на мою собственную пользовательскую кнопку. Спасибо (PS Я знаю, что это не стандарт, но ни одно из них не является моим устройством).

Ответ 1

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

Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);

Обновление: проверьте это примерное приложение: http://developer.android.com/resources/samples/Home/index.html

Ответ 2

Это намерение в xml, если вы его ищете:

    <activity
        android:name=".MainActivity"
        android:launchMode="singleTask"
        android:excludeFromRecents="true">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <!-- The following two intent-filters are the key to set homescreen -->
            <category android:name="android.intent.category.HOME" />
            <category android:name="android.intent.category.DEFAULT" />

        </intent-filter>
    </activity>

Ответ 3

Пожалуйста, обратитесь здесь

Также вы должны уметь видеть, что происходит после нажатия кнопки "Главная" из adb с использованием параметров отладки logcat, таких как:

adb logcat *: W

Ответ 4

Вы можете обратиться к коду:

Button btnHome;
btnHome = (Button) findViewById(R.id.Home);
btnHome.setOnClickListener(new OnClickListener() {  

    @Override
    public void onClick(View v) {
        // sendKey(KeyEvent.KEYCODE_HOME);
        myHandler.sendEmptyMessage(Home);
    }
});

class myRunnable implements Runnable {

    public myRunnable(int key) {
        this.keycode = key;
    }

    int keycode;

    @Override
    public void run() {
        sendKey(keycode);
    }

    public void sendKey(int keyCode) {
        System.out.println("Judy--------------------->sendkey " + keyCode);
        long now = SystemClock.uptimeMillis();
        long n = System.currentTimeMillis();
        try {
            KeyEvent down = new KeyEvent(now, now, KeyEvent.ACTION_DOWN,
                    keyCode, 0);
            KeyEvent up = new KeyEvent(now, now, KeyEvent.ACTION_UP,keyCode, 0);
            IWindowManager wm = IWindowManager.Stub.asInterface(ServiceManager
                    .getService("window"));
            wm.injectKeyEvent(down, false);
            wm.injectKeyEvent(up, false);
        } catch (RemoteException e) {}
    }
}