使用Alarm Manager启动应用程序时如何将附加内容传递给intent?

时间:2016-03-31 04:24:26

标签: android android-intent

在我正在开发的应用程序中,我有一个警报管理器,它将在特定时间启动应用程序。在此过程中,我将字符串作为意图的一部分传递,如下所示。

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

正在打开申请。但是当我执行intent.getStringExtra("STRING_NAME")时,在主屏幕的onCreate()方法中,传递的字符串值不会到来。

在本课程中,我每隔40秒初始化一次警报管理器,如下面onCreate方法所示:

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

在ScheduleSyncManager.class中,我已经编写了代码来打开应用程序,方法是将附加内容作为intent意图传递。当应用程序打开时,我会检查特定意图中是否有任何额外数据。

这是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);
        }

我在Oncreate()方法中从函数SetScheduleSync()调用ScheduleManager,因为我发布了下面的代码。

请帮我解决这个问题。有可能这样做吗?

感谢。

1 个答案:

答案 0 :(得分:2)

尝试以下方法:

LaunchIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

P.S。通常的做法是将实例的第一个字母设置为小写,即不是LaunchIntent而是launchIntent。