Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Enlace profundo de Facebook en Android

Estoy intentando implementar la función Deep Linking de Facebook en mi aplicación y encontré el siguiente escenario:

Tengo una actividad llamada MainActivity que se declara así:

  • La vista de desplazamiento de Android dentro de otra vista de desplazamiento no se desplaza
  • ¿Centrar el texto verticalmente independientemente de la altura de la vista?
  • Widget personalizado utilizando LinearLayout no obtener onDraw ()
  • Mensaje de error 'java.net.SocketException: socket failed: EACCES (Permiso denegado)'
  • Recarga de la vista previa de la cámara Android y registro de vídeo mediarecorder
  • ¿Cómo puedo pasar un valor de una página HTML a otra usando JavaScript?
  • <activity android:name="com.mypackage.android.MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> 

    Esta actividad + mi nombre de paquete también se declaran en la configuración de mi aplicación en el sitio web de desarrolladores de Facebook.

    Una vez que un enlace se hace clic en la aplicación de Facebook, se supone que manejar este evento a través del método onCreate de mi actividad. El código siguiente maneja el evento:

      public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Uri target = getIntent().getData(); if (target != null){ // got here via Facebook deep link // once I'm done parsing the URI and deciding // which part of my app I should point the client to // I fire an intent for a new activity and // call finish() the current activity (MainActivity) }else{ // activity was created in a normal fashion } } 

    Todo va según el plan excepto para el siguiente escenario:

    1. El usuario inició mi aplicación
    2. MainActivity creado
    3. Se creó SecondaryActivity
    4. Acabado de MainActivity
    5. La aplicación se pasa al fondo mediante el botón de inicio del dispositivo
    6. El enlace profundo se hace clic en la aplicación de Facebook

    En este caso, mi aplicación va a primer plano de nuevo, pero OnActivity onCreate / onNewIntent no se llama, en lugar de SecondaryActivity onResume () se llama y restaurado a su último estado.

    Nota: He probado este problema en un Samsung Nexus con Android 4.2.1 y conseguí este resultado, aunque cuando probé en Galaxy S1 con Android 2.3.5 funcionó como esperaba inicialmente.

    Cualquier ayuda sería muy apreciada, Gracias.

  • Android Genymotion VM logcat se ejecuta en bucle infinito
  • Android establece la gravedad de un TextView mediante programación
  • Llamar startIntentSenderForResult de Fragment (Android Billing v3)
  • Error en la conexión de Google Analytics con Google para el servicio
  • ¿Cómo saber cuándo una actividad finaliza un pase de diseño?
  • Swipeleft / swiperight activado durante el desplazamiento vertical en jQuery móvil
  • 3 Solutions collect form web for “Enlace profundo de Facebook en Android”

    Facebook está iniciando tu aplicación desde su propia aplicación, iniciando explícitamente tu "MainActivity" (la que has proporcionado en la página del desarrollador).

    Por lo que – el comportamiento predeterminado de Android es: si la aplicación ya se ejecuta, a continuación, llamar de nuevo a startActivity() no iniciará nueva tarea desde cero, sino sólo restaurar a primer plano la tarea ya está ejecutando.

    Pero las buenas noticias son que puedes cambiar este comportamiento del defecto agregando a tu MainActivity el android:launchMode="singleTask" . Definición es:

    El sistema crea una nueva tarea e instancia la actividad en la raíz de la nueva tarea. Sin embargo, si ya existe una instancia de la actividad en una tarea separada, el sistema direcciona la intención a la instancia existente a través de una llamada a su método onNewIntent (), en lugar de crear una nueva instancia. Sólo puede existir una instancia de la actividad a la vez.

    Desde este punto siempre se puede responder a la intención inicial, y desde ese punto siempre se puede volver a la tarea que ya estaba en segundo plano (si existe) reiniciando la actividad con ambos indicadores Intent.FLAG_ACTIVITY_SINGLE_TOP && Intent.FLAG_ACTIVITY_CLEAR_TOP combinación

    Consulte http://developer.android.com/guide/topics/manifest/activity-element.html

    Usted puede jugar con:

     android:clearTaskOnLaunch android:noHistory android:launchMode 

    Necesita tener más información en su filtro de intenciones:

     <intent-filter> <action android:name="android.intent.action.VIEW"></action> <category android:name="android.intent.category.DEFAULT"></category> <category android:name="android.intent.category.BROWSABLE"></category> <data android:host="www.yoursite.com" android:scheme="http"></data> </intent-filter> 

    Esto captura los enlaces que van a tu sitio (asegúrate de cambiar la URL) y diriges a cualquier actividad en la que defina este filtro de intenciones.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.