我有一个警报提醒,显示带有额外数据的通知。我想要做的是通过意图从我的通知发送额外的数据到我的主要活动,然后打开应用程序并调用该活动中的特定方法(位置信息)。该方法将打开一个新的活动,基于locationId我已经通过。当我的应用程序在后台运行时效果很好,但是当它被杀死时,即当应用程序完全关闭时,它会打开应用程序的主要活动,但不调用该方法。我的通知代码用于有意发送数据:Intent intent = new Intent(this, MainActivity.class);intent.putExtra("fromNotification", true);intent.putExtra("locationId", locationId);intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);PendingIntent pendingIntent = PendingIntent.getActivity(this, 111, intent, PendingIntent.FLAG_UPDATE_CURRENT);这就是我如何称呼我的方法:@Overrideprotected void onNewIntent(Intent intent) { super.onNewIntent(intent); setIntent(intent); if (getIntent().hasExtra("fromNotification")) { String locationId = getIntent().getStringExtra("locationId"); CallFetchLocationInfoFromMapsFragment(locationId); }}我也尝试在我的主要活动的 onCreate 末尾添加它,这应该是解决方案,但它什么也没做:if (getIntent().hasExtra("fromNotification")) { String locationId = getIntent().getStringExtra("locationId"); CallFetchLocationInfoFromMapsFragment(locationId);}我尝试了更多的解决方案(包括this、this、this、this、this、this、this等等),但无法使其工作
2 回答
SMILET
TA贡献1796条经验 获得超4个赞
在评论(以上)的讨论中,您表示您正在使用launchMode="singleTask"
. 这是一种特殊的启动模式,您的应用程序不需要。它通常会产生比解决的更多的问题。请删除特殊启动模式,看看是否有帮助。完成此操作后,在应用未运行时点击通知应启动应用并创建MainActivity
.
也有可能你不能做你想做的事,onCreate()
因为你Fragment
还没有设置好。您可能只需要记住您想要做什么(开始位置详细信息),onCreate()
但延迟实际操作,直到onResume()
或在您设置了Fragment
s 或其他任何内容之后。
慕码人8056858
TA贡献1803条经验 获得超6个赞
我想你需要这个
if (getIntent().hasExtra("fromNotification")) {
String locationId = getIntent().getStringExtra("locationId");
CallFetchLocationInfoFromMapsFragment(locationId);
}
以及在清单中为您的活动设置singleTask启动模式
<activity android:name=".YourActivity"
android:launchMode="singleTask">
...
</activity>
添加回答
举报
0/150
提交
取消