Écoutez l'événement de progression de l'onglet personnalisé chrome

J'ai une application utilisant Chrome custom tabs pour ouvrir des liens. Je dois avoir un événement chaque seconde pendant tout le temps que l'utilisateur reste sur Chrome ou savoir combien de temps il reste sur Chrome. Pour moi, la seule façon de le faire est d'utiliser un Service . Est-il possible de le faire différemment?

  • Faire le même espace entre le bouton en linearlayout
  • Masquer la notification du service de premier plan alors que l'activité est visible
  • Utilisation de Locale pour forcer Android à utiliser un fichier strings.xml spécifique pour une langue non supportée
  • Quelle est la différence entre getDir et getFilesDir sur Android?
  • Quelle est la fiabilité de la fonctionnalité getLastKnownLocation d'emplacementManager et à quelle fréquence est-elle mise à jour?
  • Développer / Réduire Animation: Small lag || MeasureSpec renvoie une mauvaise valeur
  • Ce SDK d'Android nécessite la version ADT 23.0.0 ou supérieure. La version actuelle est 22.6. Veuillez mettre à jour ADT vers la dernière version?
  • ORMLite réinitialise toutes les tables
  • Taille de texte de l'échelle automatique
  • RecyclerView et SwipeRefreshLayout
  • Fake Poor Internet
  • SecurityException: invocation du classeur à une interface incorrecte sur APK signé
  • 2 Solutions collect form web for “Écoutez l'événement de progression de l'onglet personnalisé chrome”

    Créez votre classe YourBroadCastReceiver comme suit

     public class YourBroadCastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Log.i("Called every 60 seconds","called"); } } 

    Après avoir démarré votre onglet personnalisé, créez réellement Alarm PendingIntent qui déclenchera YourBroadCastReceiver une fois toutes les 60 secondes.

      // Retrieve a PendingIntent that will perform a broadcast Intent repeatingIntent = new Intent(context, YourBroadCastReceiver.class); PendingIntent pendingIntent = PendingIntent.getBroadcast( context, _pendingIntentId, alarmIntent, 0); AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); // Set the alarm to start at 10:00 AM Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(System.currentTimeMillis()); manager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 60 * 1000, // repeat for every 60 seconds pendingIntent); 

    Après avoir fermé votre onglet personnalisé, n'oubliez jamais d'annuler votre PendingIntent

     PendingIntent.getBroadcast( context, _pendingIntentId, alarmIntent, 0).cancel(); 

    Pour la mise en œuvre des onglets personnalisés chrome j'ai suivi ce tutoriel, lien github.

    Ma solution repose essentiellement sur boolean et System.currentTimeMillis () .

    Étape 1: déclarez deux variables globales de classe,

      private boolean isCustomTabsLaunched = false; private long customTabsEnterTime; 

    Étape 2: Définissez les valeurs pour les variables ci-dessus lorsque launchUrl.

      FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Log.d(TAG, "FloatingActionButton"); // Launch Chrome Custom Tabs on click customTabsIntent.launchUrl(CustomTabsActivity.this, Uri.parse(URL)); isCustomTabsLaunched = true; customTabsEnterTime = System.currentTimeMillis(); Log.d(TAG, "customTabsEnterTime = " + customTabsEnterTime); } }); 

    Étape 3: calculer le temps de séjour dans la méthode onResume.

      @Override protected void onResume() { super.onResume(); Log.d(TAG, "onResume"); if (isCustomTabsLaunched) { isCustomTabsLaunched = false; calculateStayTime(); } } private void calculateStayTime() { long customTabsExitTime = System.currentTimeMillis(); Log.d(TAG, "customTabsExitTime = " + customTabsExitTime); long stayTime = (customTabsExitTime - customTabsEnterTime) / 1000; //convert in seconds Log.d(TAG, "stayTime = " + stayTime); } 

    Afin de rendre le code plus robuste, vous pouvez stocker boolean isCustomTabsLaunched et long customTabsEnterTime dans les préférences ou la base de données, de sorte que, en tout cas, ces deux paramètres sont détruits lorsque votre activité risque d'être détruite en arrière-plan si l'utilisateur reste longtemps dans un onglet personnalisé Chrome.

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.