1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Frage: Update-Benachrichtigung deaktivieren?

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von zx128, 04.03.2009.

  1. zx128, 04.03.2009 #1
    zx128

    zx128 Threadstarter Android-Lexikon

    Beiträge:
    1,179
    Erhaltene Danke:
    143
    Registriert seit:
    23.01.2009
    Hallo Forum,

    weiß jemand näheres darüber, wie die Update-Benachrichtigung funktioniert?

    Ich will noch nicht auf RC9 updateten und das kleine Update-Fenster gehr mir
    lagsam auf die nerven.

    Hätte ein Background-Service z.B. die Möglichkeit das Update-Fenster
    zumindest mal "wegzuklicken"?

    Danke.
     
  2. mathemagician, 04.03.2009 #2
    mathemagician

    mathemagician Neuer Benutzer

    Beiträge:
    20
    Erhaltene Danke:
    2
    Registriert seit:
    28.02.2009
    Ich bin noch Android-SDK-n00b und kann daher nur mit gefaehrlichem Halbwissen zu diesem Thema glaenzen :D

    Angenommen du wuerdest die Notification-ID der Update-Benachrichtigung kennen so koenntest du theoretisch via NotificationManager.cancel(id) die Nachricht entfernen. Das scheitert aber vermutlich daran, dass (1) du keinen Zugriff auf die Notifications _anderer_ Applikationen hast (Sicherheit) und (2) laut Doku muessen die IDs nur unique fuer deine Applikation selbst sein (was mich wieder zu Punkt 1 bringt). Hab's selbst noch nicht probiert....

    Vielleicht gibt's andere "Angriffspunkte" anstelle einer Notification - z.B. Intents. Dann koenntest Du vielleicht die Benachrichtigung an einem frueheren Punkt abfangen/verhindern. Was sagt denn adb logcat zu solchen Update-Meldungen?

    Kann's leider selbst nicht ausprobieren, da ich JF1.43/ADP1.1h laufen habe.

    --
    Marcus
     
  3. zx128, 04.03.2009 #3
    zx128

    zx128 Threadstarter Android-Lexikon

    Beiträge:
    1,179
    Erhaltene Danke:
    143
    Registriert seit:
    23.01.2009
    Es sieht so aus:

    [​IMG]

    Hier ist die Logcat-Ausgabe:

    Es wird also eine neue Activity gestartet, keine Notification (mit einer Notification könnte ich noch leben).

    Ich hab mal testweise versucht unter "adb shell" mit "kill" die Activity zu beenden - keine Rechte. D.h. eine Android-App wird auch keine Rechte dafür haben.

    Beim ActivityManager fand ich dazu nichts nützliches. Abgesehen davon liefert die Methode getRunningTasks nicht alle Tasks. Habe dazu bei android-groups eine Aussage gefunden, dass es im Moment keine High-Level-Apis dafür gibt, man müsse mit ps oder /proc/PID drankommen.

    Tja, sieht schlecht aus,
     

    Anhänge:

  4. friedger, 04.03.2009 #4
    friedger

    friedger Erfahrener Benutzer

    Beiträge:
    175
    Erhaltene Danke:
    15
    Registriert seit:
    15.01.2009
  5. zx128, 04.03.2009 #5
    zx128

    zx128 Threadstarter Android-Lexikon

    Beiträge:
    1,179
    Erhaltene Danke:
    143
    Registriert seit:
    23.01.2009
    Hast leider recht, umbennen wird nicht klappen - keine Rechte.

    Der Ansatz mit IntentFilter scheint interessant, den werde ich mal versuchen.
    Selbst wenns icht klappt - dann lerne ich halt was neues ;)
     
  6. friedger, 04.03.2009 #6
    friedger

    friedger Erfahrener Benutzer

    Beiträge:
    175
    Erhaltene Danke:
    15
    Registriert seit:
    15.01.2009
    Bin am Ergebnis interessiert, einfach wegen OpenIntents.

    Vielleicht hilft es im intent-filter die Priorität anzugeben.
     
  7. zx128, 05.03.2009 #7
    zx128

    zx128 Threadstarter Android-Lexikon

    Beiträge:
    1,179
    Erhaltene Danke:
    143
    Registriert seit:
    23.01.2009
    Results: :mad:

    Mein BroadcastReceiver wird nicht aufgerufen.

    Ich verstehe jetzt auch wieso, dieses FOTA_READY ist kein Broadcast, wird ja mit
    comp={com.android.updater/com.android.updater.PesterActivity}
    aufgerufen. Wahrscheinlich mit startActivity(ForResult).

    Ich wollte mir schon den Aufruf anschauen, der Logcat deutet auf:
    com.android.vending/.PackageMonitorReceiver$UpdateCheckinDatabaseService

    Nur finde ich das Ding nicht in Sources. :confused:

    Ein "grep -s -r FOTA_READY *" gibt übrigens auch nur PesterActivity.java aus.

    Najut, hab was neues gelernt :cool:
     
  8. mathemagician, 05.03.2009 #8
    mathemagician

    mathemagician Neuer Benutzer

    Beiträge:
    20
    Erhaltene Danke:
    2
    Registriert seit:
    28.02.2009
    Sehr interessant - ich dachte die Benachrichtigung waere eine wirkliche notification, ist aber bloß eine Activity.

    Diese PesterActivity haelt sich wohl mittels dem AlarmManager selbst am "Leben" - so, dass abhaengig von dem Intent-Extra "promptMinutes" diese Activity in Intervallen erneut aufgerufen wird.

    In onNewIntent():
    Code:
         
    Intent install = new Intent("android.server.checkin.FOTA_INSTALL", uri);
    mInstallIntent = PendingIntent.getBroadcast(this, 0, install, 0);
    
    Theoretisch koenntest du per AlarmManager.cancel und dem mInstallIntent dieses "Aufwecken" abbrechen - allerdings wirst du wahrscheinlich an den Rechten (dein Kontext != PesterActivity-Kontext ?) bzw. dem falschen Context scheitern.

    Vielleicht macht es mehr Sinn, diese Activity mittels dem Action
    "android.server.checkin.FOTA_READY" aufzurufen und ein wenig mit den
    Intent-Extras zu spielen:

    - das Extra "promptMinutes" hochsetzen, damit du erstmal Ruhe hast (siehe PesterActivity.getNextPromptMinutes())

    - das Extra "updateFile" auf eine nicht existierende Datei verweisen lassen (siehe PesterActivity.onNewIntent()), damit er denkt, dass Update existiert nicht mehr und die Activity - und den Timer - beendet.

    Allerdings bin ich mir unsicher in zwei Punkten:

    - wenn Du die Activity per Intent selbst aufrufst und via promptMinutes/updateFile den (womoeglich "neuen") Timer verlaengerst/deaktivierst - bleibt der "alte" Timer noch aktiv?
    - wer triggert diese Activity? selbst wenn du den Timer deaktiviert kriegst wird diese Activity vielleicht dennoch erneut von einer anderen App erneut gestartet?

    Ich habe mit dem AlarmManager noch nie rumgespielt, daher habe ich keine
    Ahnung wie er reagiert. Insofern kann der beschriebene Weg vielleicht auch voelliger Humbug sein ;-)

    Viel Erfolg :D

    --
    Marcus
     
  9. mathemagician, 05.03.2009 #9
    mathemagician

    mathemagician Neuer Benutzer

    Beiträge:
    20
    Erhaltene Danke:
    2
    Registriert seit:
    28.02.2009
    Da ich meinen vorigen Beitrag ja nicht editieren kann, hier eine Ergaenzung:
    Anstelle mit deinem BroadcastReceiver auf FOTA_READY zu reagieren, versuch doch mal auf "android.server.checkin.FOTA_INSTALL" zu lauschen. Siehe hier auch wieder PesterActivity.java.....

    --
    Marcus
     
  10. scheichandro, 07.09.2009 #10
    scheichandro

    scheichandro Neuer Benutzer

    Beiträge:
    24
    Erhaltene Danke:
    0
    Registriert seit:
    09.07.2009
    Hallo

    Kleine Nachfrage:
    Hat jemand schon einen gangbaren Weg gefunden die Update-Benachrichtigung zu deaktivieren?

    Danke
     

Diese Seite empfehlen