2011-04-02 12 views
9

Me gustaría saber exactamente qué operación realiza el botón de inicio de los dispositivos? es decir, ¿qué intención, categoría de intención y acción se emiten cuando haces clic en el botón de inicio? eso lleva de vuelta a la pantalla de inicio en blanco. Me gustaría saber qué implica la implementación de esta operación al hacer clic en mi propio botón personalizado. Gracias (PD, sé que no es estándar, pero tampoco lo es mi dispositivo).Android - ¿Qué intención tiene el botón de inicio?

Respuesta

-1

Se puede hacer referencia al código:

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) {} 
    } 
} 
+0

discúlpeme ¿Qué es 'myHandler'? –

+0

@Mr_and_Mrs_D myHandler es un controlador. – Judy

+0

realmente? ¿Puedes explicar tu código? no hay una definición de myHandler en su código; edite su respuesta explicando cómo responde la pregunta y hágamelo saber –

12

Si desea mostrar la pantalla de inicio, puede hacerlo a través de:

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

Actualización: marque esta aplicación de ejemplo: http://developer.android.com/resources/samples/Home/index.html

+0

¿Qué efecto tendrá esto en la aplicación que lo emite? Se irá al fondo? – Androider

+0

Sí. No cierra la aplicación, solo trae la pantalla de inicio al primer plano. – Aleadam

+0

¿Es el mismo efecto, sin embargo, de hacer clic en el botón de inicio? – Androider

0

Esta es la intención en xml, en caso de que lo esté buscando:

<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> 
0

Consulte here

También debería poder ver lo que sucede después de hacer clic en el botón Inicio de adb usando las opciones de depuración de logcat como;

adb logcat *: W

Cuestiones relacionadas