É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?

  • Génération automatique de la référence @String dans Android Studio
  • Version Android de version automatique de git décrivez avec Android Studio / Gradle
  • Bibliothèque Android Picasso, Comment ajouter des en-têtes d'authentification?
  • Fling gesture detection on grid layout
  • Google Maps V2 affiche un écran vide sur Android 2.2
  • Impossible de charger lept from loader findLibrary est-il devenu nul?
  • Android WebView à l'intérieur de ScrollView scrolls only scrollview
  • Moteur de modèle HTML léger et léger
  • Push notifications / C2DM pour Kindle Fire?
  • "Android: elevation =" ne fonctionne pas sur les périphériques pré-Lollipop avec compilation API21
  • Gradle ne peut pas trouver la dépendance Google Play
  • Kivy - Plyer - Android - envoi de notification alors que l'application ne fonctionne pas
  • 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.