Update/Replace der App mitbekommen

  • Antworten:2
Mac Systems
  • Forum-Beiträge: 1.727

24.07.2010, 17:39:40 via Website

Wird eine APP ersetzt werden z.b alle Alarme aus der APP gelöscht, in diesem Fall müssen diese neu angelegt werden.
Um überhaupt mitzubekommen das die APP gerade updated wird benutzt man einen BroadcastReciever:


1import android.content.BroadcastReceiver;
2import android.content.Context;
3import android.content.Intent;
4import android.net.Uri;
5import android.util.Log;
6
7/**
8 * A Reciever which gets called when an update/replacement of the application
9 * held.
10 *
11 * @author mac
12 */
13public final class ReplaceReceiver extends BroadcastReceiver
14{
15
16 private final static String LOG_TAG = ReplaceReceiver.class.getSimpleName();
17 /**
18 * Used to identify that this Application get replaced or updated.
19 */
20 private final Uri uri = new Uri.Builder().scheme("package").encodedOpaquePart("de.your.package").build();
21
22 /*
23 * (non-Javadoc)
24 *
25 * @see android.content.BroadcastReceiver#onReceive(android.content.Context,
26 * android.content.Intent)
27 */
28 @Override
29 public void onReceive(final Context _context, final Intent _intent)
30 {
31 if (uri.equals(_intent.getData()))
32 {
33 Log.i(LOG_TAG, "ReplaceReceiver called");
34 doSomething(_context);
35 }
36 }
37
38 private static void doSomething(final Context _context)
39 {
40 // add your Code there !
41 }
42}


Im Manifest muss der Reciever entsprechend deklariert werden:


1<receiver
2 android:name="de.your.package.ReplaceReceiver"
3 android:label="@string/app_name"
4 android:enabled="true"
5 android:exported="false">
6 <intent-filter>
7 <action
8 android:name="android.intent.action.PACKAGE_CHANGED" />
9 <action
10 android:name="android.intent.action.PACKAGE_ADDED" />
11 <action
12 android:name="android.intent.action.PACKAGE_INSTALL" />
13 <action
14 android:name="android.intent.action.PACKAGE_REPLACED" />
15 <data
16 android:scheme="package"
17 android:path="de.your.package" />
18 </intent-filter>
19 </receiver>


Der data-abschnitt ist wichtig, da ihr sonst zu allem möglichen Apps informiert werdet was aber lezendlich euere APP gar nicht betrifft:

1<data
2 android:scheme="package"
3 android:path="de.your.package" />

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten
Dominic Bartl
  • Forum-Beiträge: 180

19.08.2010, 10:31:45 via Website

oder man machts einfach einfacher und überprüft bei jedem start ob sich die version geändert hat :bashful:

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

19.08.2010, 11:03:51 via Website

Da das hier die Snippet Ecke ist verrätst du uns auch sicher per Code wie du das meinst !

Abgesehen davon, wie soll das funktionieren wenn z.b Alarme neu gesetzt werden müssen ohne das die APP neu gestartet wird ?

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten