Mac Systems
- Forum-Beiträge: 1.727
24.07.2010, 17:39:40 via Website
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:
Im Manifest muss der Reciever entsprechend deklariert werden:
Der data-abschnitt ist wichtig, da ihr sonst zu allem möglichen Apps informiert werdet was aber lezendlich euere APP gar nicht betrifft:
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}
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>
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" />
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
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.