在我正在开发的应用程序中,我有一个警报管理器,它将在特定时间启动应用程序。在此过程中,我将字符串作为意图的一部分传递,如下所示。
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,因为我发布了下面的代码。
请帮我解决这个问题。有可能这样做吗?
感谢。
答案 0 :(得分:2)
尝试以下方法:
LaunchIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
P.S。通常的做法是将实例的第一个字母设置为小写,即不是LaunchIntent而是launchIntent。