2016-03-31 6 views
1

In der Anwendung, die ich entwickle, habe ich einen Alarmmanager, der die Anwendung in bestimmter Zeit startet. Während dieses Prozesses übergebe ich einen String als Teil der Intents wie unten gezeigt.Wie werden die Extras an die Absicht übergeben, wenn die Anwendung mit dem Alarm Manager gestartet wird?

Intent LaunchIntent = context.getPackageManager().getLaunchIntentForPackage("Application Package Name"); 
     String strName = "Preferences"; 
     LaunchIntent.putExtra("STRING_NAME", strName); 
     context.startActivity(LaunchIntent); 

Es öffnet die Anwendung. Aber in dem, wenn ich intent.getStringExtra("STRING_NAME"), in der OnCreate() Methode der Startseite, der übergebene Zeichenfolge Wert kommt nicht.

In dieser Klasse zu initialisieren Ich bin der Alarmmanager für alle 40 Sekunden, wie in dem unten stehenden onCreate Verfahren gezeigt:

private static void SetScheduleSync(Context context) { 
     Intent downloader = new Intent(context, ScheduleSyncManager.class); 

     PendingIntent recurringDownload = PendingIntent.getBroadcast(context, 1000, downloader, PendingIntent.FLAG_CANCEL_CURRENT); 

     AlarmManager manager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 
     int interval = 10000*4; 
     manager.setInexactRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), interval, recurringDownload); 
    } 

Im Innern des ScheduleSyncManager.class, ich habe Code geschrieben, um die Anwendung zu öffnen, indem die Extras als Kitzel der Absicht. Wenn die Anwendung geöffnet wird, überprüfe ich, ob zusätzliche Daten in der bestimmten Absicht vorhanden sind. Hier

ist die ScheduleManagerDeclaration:

public class ScheduleSyncManager extends WakefulBroadcastReceiver { 
    public Boolean IsCustomizingPresent = false; 
    String strName = "Preferences"; 

    @Override 
    public void onReceive(Context context, Intent intent) { 

     Toast.makeText(context, "Sync in the background has Started", Toast.LENGTH_SHORT).show(); 
     performScheduleSync(context, intent); 
    } 

    public void performScheduleSync(Context context, Intent intent) { 

     Intent launchIntent = context.getPackageManager().getLaunchIntentForPackage("com.sap.rex.ui"); 
     launchIntent.putExtra("STRING_NAME", strName); 
     launchIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     context.startActivity(launchIntent); 
     } 

und ich bin Aufruf der ScheduleManager von Funktion SetScheduleSync() in OnCreate() -Methode, wie ich den Code unten geschrieben.

Bitte helfen Sie mir dabei. Ist es möglich, so zu tun?

Danke.

Antwort

2

Versuchen Sie Folgendes:

LaunchIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

P. S. Es ist üblich, die ersten Buchstaben der Instanzen in Kleinbuchstaben zu schreiben, d. H. Nicht LaunchIntent, sondern launchIntent.

+0

sicher werde ich versuchen und dich wissen lassen. Danke – coders

+0

Ich habe müde. Aber es kommt immer noch nicht als Teil von Vorsatz-Extras auf. – coders

+0

Vielleicht dies: LaunchIntent.setFlags (Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP); – ozo

Verwandte Themen