2012-07-31 18 views

Respuesta

21

puede enviar el botón de retroceso de prensa para el sistema como este

this.dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK)); 

o se puede anular el botón de retroceso prensa y llamar

finish(); 

en su actividad. Eso básicamente hace lo mismo que el botón de retroceso genérico.

+0

no funciona en mi código ... me dice que cambiarlo a ACTION_DOWN y KEYCODE_BACK no existen, lo que necesitaría importar para que se encuentren? – JuiCe

+1

Intenta usar KeyEvent.ACTION_DOWN y KeyEvent.KEYCODE_BACK :) – jimmithy

+0

Muchas gracias a los dos. – JuiCe

12

Simplemente llame al this.onBackPressed(); en Actividad.

+0

Esta es una gran respuesta. – VSG24

+1

Esta es la mejor respuesta, ya que el simple hecho de llamar al finalizador no se activa onBackPressed como lo hace el botón de retroceso real. Si la actividad está haciendo cosas extra, se perderá. – Andrew

+0

Pero, como si hubiera diálogo sobre actividad, cerrará la actividad, y el botón real no lo hace. – NehaK

0

Si sólo desea botón de hardware "de prensa", crear el servicio se extendió desde AccessibilityService:

class ExampleAccessService:AccessibilityService() { 
    override fun onInterrupt() { 
    } 

    override fun onAccessibilityEvent(event: AccessibilityEvent?) { 
    } 

    fun doAction(){ 
     performGlobalAction(GLOBAL_ACTION_RECENTS) 
//  performGlobalAction(GLOBAL_ACTION_BACK) 
//  performGlobalAction(GLOBAL_ACTION_HOME) 
//  performGlobalAction(GLOBAL_ACTION_NOTIFICATIONS) 
//  performGlobalAction(GLOBAL_ACTION_POWER_DIALOG) 
//  performGlobalAction(GLOBAL_ACTION_QUICK_SETTINGS) 
//  performGlobalAction(GLOBAL_ACTION_TOGGLE_SPLIT_SCREEN) 
    } 
} 

llamada doAction() en la que desea la acción

Añadir a Manifest:

<application 
... 
    <service 
     android:name=".ExampleAccessService" 
     android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE" 
     android:label="Name of servise" // it will be viewed in Settings->Accessibility->Services 
     android:enabled="true" 
     android:exported="false" > 
     <intent-filter> 
      <action android:name="android.accessibilityservice.AccessibilityService"/> 
     </intent-filter> 
     <meta-data 
      android:name="android.accessibilityservice" 
      android:resource="@xml/accessibility_service_config"/> 
    </service> 
... 
</application> 

accessibili ty_service_config.xml:

<?xml version="1.0" encoding="utf-8"?> 
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android" 
    android:accessibilityEventTypes="typeAllMask" 
    android:accessibilityFeedbackType="feedbackAllMask" 
    android:accessibilityFlags="flagDefault" 
    android:canRetrieveWindowContent="false" 
    android:description="your description" 
    android:notificationTimeout="100" 
    android:packageNames="your app package, ex: ex: com.example.android" 
    android:settingsActivity="your settings activity ex: com.example.android.MainActivity" /> 

para obtener más información mira https://developer.android.com/guide/topics/ui/accessibility/services.html

Cuestiones relacionadas