Hören Sie Chrome Custom Tab Fortschrittsereignis

Ich habe eine Anwendung mit Chrome custom tabs , um einige Links zu öffnen, muss ich Event jede Sekunde haben während der ganzen Zeit der Benutzer auf Chrome bleiben, oder wissen, wie viele Zeit er auf Chrome bleiben. Für mich ist der einzige Weg, es zu tun, einen Service zu benutzen. Ist es möglich, es anders zu machen?

  • Wie verlängere ich die Android-Klasse, die Parcelable Interface implementiert?
  • Android - Superklasse kann nicht gelöst werden
  • Auf der Unterstützungsbibliothek v7 aufgeben Was habe ich falsch gemacht
  • Erlaube Dropbox API, auf mein Konto auf dem Benutzergerät zuzugreifen
  • Erhalte Android-Kontext im PCL-Projekt
  • Javadoc in Eclipse erkennt Pakete nicht
  • Android Set benutzerdefinierte Schriftart zu einer Farbe
  • Eclipse "Java Heap Space" Fehler, Eclipse reagiert nicht
  • ThreeTen-Backport-Fehler auf Android - ZoneRulesException: Keine Zeitzonen-Datendateien registriert
  • Wie man ein projekt in eklipse eröffnet
  • 'Open Declaration' in Eclipse navigiert zu Klassendateien statt zu Quelldateien für Android-Bibliotheken
  • Verwenden von Dolch für Abhängigkeitsinjektion auf Konstruktoren
  • 2 Solutions collect form web for “Hören Sie Chrome Custom Tab Fortschrittsereignis”

    Erstellen Sie Ihre YourBroadCastReceiver-Klasse wie folgt

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

    Nachdem Sie Ihre benutzerdefinierte Registerkarte erfolgreich gestartet haben, erstellen Sie Alarm PendingIntent, der Ihren BroadCastReceiver einmal alle 60 Sek. Auslöst.

      // 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); 

    Nach dem Schließen deiner benutzerdefinierten Registerkarte niemals vergessen, deinen PendingIntent abzubrechen

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

    Für die Implementierung von Chrome Custom Tabs habe ich diesem Tutorial, Github Link gefolgt.

    Meine Lösung basiert grundsätzlich auf boolean und System.currentTimeMillis () .

    Schritt 1: Deklariere zwei globale globale Variablen,

      private boolean isCustomTabsLaunched = false; private long customTabsEnterTime; 

    Schritt 2: Setzen Sie Werte für oben auf Variablen, wenn 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); } }); 

    Schritt 3: Berechnen Sie die Aufenthaltszeit in der onResume-Methode.

      @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); } 

    Um den Code robuster zu machen, kannst du boolean isCustomTabsLaunched und lange customTabsEnterTime in Präferenzen oder Datenbank speichern, so dass auf jeden Fall diese beiden Params zerstört werden, da deine Aktivität im Hintergrund zerstört werden kann, wenn der Benutzer lange Zeit im Chrome Custom Tab bleibt.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.